Дальность не соответствует порядку в классе символов в javascript
Я не знаю, потому что мое регулярное выражение неверно:
var domain = "google\.com\.br";
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$");
Мне нужно это для проверки электронной почты, например: reEmail.test("[email protected]");
Я получаю эту ошибку:
Дальность не в порядке в классе символов
Ответы
Ответ 1
Поскольку вы создаете RegExp, используя String, _\-\.
становится _-.
, и это недопустимый диапазон.
(Это диапазон от _
до .
, и это неверно)
Вам нужно удвоить его:
new RegExp("^([A-Za-z0-9_\\-\\.])[email protected]" + domain + "$");
Таким образом, \\
становится \
в String, а затем используется для выхода из -
в RegExp.
EDIT:
Если вы создаете RegExp by String, всегда полезно регистрировать результат, чтобы вы видели, все ли вы сделали правильно:
например. ваша часть RegExp
console.log("^([A-Za-z0-9_\-\.])+\@");
приводит к:
^([A-Za-z0-9_-.])[email protected]
Ответ 2
([A-Z][a-z][0-9]_\-\.)+
означает точно "букву с верхним регистром, за которой следует нижняя буква, за которой следует цифра, а затем _
, -
и .
, и вся эта последовательность n раз".
Я думаю, вам нужно [A-Za-z0-9_.-]+
.
Итак, наконец: "^[A-Za-z0-9_.-][email protected]" + domain + "$"
.