Проверка правильности выражения в jQuery
В jQuery есть ли функция/плагин, который я могу использовать для соответствия данному регулярному выражению в строке?
Например, в поле ввода электронной почты я получаю адрес электронной почты и хочу узнать, находится ли он в правильном формате. Какую функцию jQuery следует использовать, чтобы проверить, соответствует ли мое регулярное выражение правильному выражению?
Я искал решение для решения проблемы, но я ничего не смог найти.
Ответы
Ответ 1
Я считаю, что это делает:
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
У него есть встроенные шаблоны для таких вещей, как URL-адреса и адреса электронной почты, и я думаю, вы также можете использовать его самостоятельно.
Ответ 2
Если вы хотите выполнить поиск некоторых элементов на основе регулярного выражения, вы можете использовать функцию filter
. Например, предположим, что вы хотите убедиться, что во всех вводах пользователь имеет только введенные числа, поэтому давайте найдем все входы, которые не соответствуют и выделяют их.
$("input:text")
.filter(function() {
return this.value.match(/[^\d]/);
})
.addClass("inputError")
;
Конечно, если бы это было что-то вроде этого, вы могли бы использовать плагин проверки формы, но этот метод можно было применить к любым элементам, которые вам нравятся. Другой пример, чтобы показать, что я имею в виду: найти все элементы, чей id
соответствует /[a-z]+_\d+/
$("[id]").filter(function() {
return this.id.match(/[a-z]+_\d+/);
});
Ответ 3
Я использую jQuery и JavaScript, и он отлично работает для меня:
var rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
if(rege.test($('#uemail').val())){ //do something }
Ответ 4
Если вы ищете что-то конкретное, вы уже можете выполнять регулярное выражение, используя обычный Javascript со строками.
Например, вы можете выполнить сопоставление с помощью строки примерно таким образом...
var phrase = "This is a phrase";
phrase = phrase.replace(/is/i, "is not");
alert(phrase);
Есть ли что-то, что вы ищете помимо обычного соответствия регулярному выражению?
Ответ 5
Мой код:
$("input.numeric").keypress(function(e) { /* pour les champs qui ne prennent que du numeric en entrée */
var key = e.charCode || e.keyCode || 0;
var keychar = String.fromCharCode(key);
/*alert("keychar:"+keychar + " \n charCode:" + e.charCode + " \n key:" +key);*/
if ( ((key == 8 || key == 9 || key == 46 || key == 35 || key == 36 || (key >= 37 && key <= 40)) && e.charCode==0) /* backspace, end, begin, top, bottom, right, left, del, tab */
|| (key >= 48 && key <= 57) ) { /* 0-9 */
return;
} else {
e.preventDefault();
}
});
Ответ 6
Из jquery.validate.js(by joern), внесенный Скоттом Гонсалесом:
http://projects.scottsplayground.com/email_address_validation/
/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i
Удостоверьтесь, что вы удвоите @@, если используете MVC Razor:
/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i
Голодные для спагетти?