Значение Jquery Value Regex
Я пытаюсь проверить вход для E-Mail через JQuery:
Мой JQuery
<script>
/* <![CDATA[ */
jQuery(function(){
$( ".mail" ).keyup(function() {
var VAL = $(this).val();
var email = new RegExp(^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$);
if(VAL.test(email)){
alert('Great, you entered an E-Mail-address');
}
});
});
/* ]]> */
</script>
Это не будет отображаться, даже если я набрал [email protected]
Я уже пробовал .test() и .match(), что я сделал неправильно?
Ответы
Ответ 1
- Передайте строку в RegExp или создайте регулярное выражение с помощью синтаксиса
//
- Вызов
regex.test(string)
, а не string.test(regex)
Итак,
jQuery(function () {
$(".mail").keyup(function () {
var VAL = this.value;
var email = new RegExp('^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$');
if (email.test(VAL)) {
alert('Great, you entered an E-Mail-address');
}
});
});
Ответ 2
Измените его так:
var email = /^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i;
Это литерал регулярного выражения, которому передается флаг i
, что означает нечувствительность к регистру.
Имейте в виду, что проверка адреса электронной почты жесткая (есть регулярное выражение из 4 или 5 страниц в конце Mastering Regular Expressions, демонстрирующее это), и ваше выражение, конечно же, не будет фиксировать все действительные e- адреса электронной почты.