Javascript regex.test() "Uncaught TypeError: undefined не является функцией"
Просто пытаюсь использовать возможности regex javascript с помощью функции .test()
.
var nameRegex = '/^[a-zA-Z0-9_]{6,20}$/';
if(nameRegex.test($('#username').val())) {
...
}
Ошибка в этой строке if(nameRegex.test($('#username').val())) {
Отладчик разрывается там и говорит "Некопать TypeError: undefined не является функцией" . Кажется, что .test()
не определен? Не должно быть?
Ответы
Ответ 1
Как он в настоящее время стоит, nameRegex
не является регулярным выражением, но строка и String
не имеют test
functon, поэтому вы получаете эту ошибку.
Удалите кавычки вокруг вашего регулярного выражения. Это буквальная форма регулярного выражения.
var nameRegex = /^[a-zA-Z0-9_]{6,20}$/; //remove the quotes
Ответ 2
Кроме того, вы можете создать RegExp из строки встроенным конструктором в javascript.
var nameRegex = '^[a-zA-Z0-9_]{6,20}$';
var regex = new RegExp(nameRegex);
...
if(regex.test(stringToTest)) {
...
}
...
MDN Docs:: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
ПРИМЕЧАНИЕ. Не создавайте исходные "/" косые черты в строке при создании объекта регулярного выражения... Он добавит их.