Как я могу избежать символов внутри этого регулярного выражения? - PullRequest
1 голос
/ 23 сентября 2010

У меня есть эта функция, которая будет проверять адрес электронной почты.jsLint выдает ошибку с регулярным выражением, жалуясь на то, что некоторые символы не экранированы.

Есть ли способ правильно экранировать их?

var validateEmail = function(elementValue){
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return emailPattern.test(elementValue);
};

Ответы [ 2 ]

7 голосов
/ 23 сентября 2010

Используемое регулярное выражение допустимо. Но я предполагаю, что JSLint жалуется на отсутствие знака escape перед - в классах символов:

/^[a-zA-Z0-9._\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,4}$/

Выход из - внутри класса символов требуется только в том случае, если он не находится в начале или конце класса символов или если он не обозначает диапазон при использовании между двумя символами.

Вот несколько допустимых примеров:

/[-xyz]/    // "-", "x", "y", "z"
/[xyz-]/    // the same as above
/[-]/       // "-"
/[a-z-]/    // "a"-"z", "-"
/[a-b-c]/   // "a"-"b", "-", "c"
1 голос
/ 23 сентября 2010

Я не вижу сразу, что нужно убежать.Возможно, вы захотите попробовать /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i для своего регулярного выражения.Я просто немного убрал его и добавил + и % к первому полю.

...