Подтвердить что ты не робот

Дальность не соответствует порядку в классе символов в javascript

Я не знаю, потому что мое регулярное выражение неверно:

var domain = "google\.com\.br";
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$");

Мне нужно это для проверки электронной почты, например: reEmail.test("[email protected]");

Я получаю эту ошибку:

Дальность не в порядке в классе символов

4b9b3361

Ответ 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 + "$".