2008-12-05 5 views
72

В jQuery есть ли функция/плагин, который я могу использовать для соответствия данному регулярному выражению в строке?Проверка правильности выражения в jQuery

Например, в поле ввода электронной почты я получаю адрес электронной почты и хочу узнать, находится ли он в правильном формате. Какую функцию jQuery следует использовать, чтобы проверить, соответствует ли мое регулярное выражение правильному выражению?

Я googled для решения, но я ничего не смог найти.

+1

Название этого вопроса немного вводит в заблуждение. Возможно, должно быть лучше, чтобы указать, что это связано с сопоставлением входных данных формы. Я дал +1 ответ nickf, потому что это то, что я искал. – mydoghasworms 2011-08-10 06:42:41

ответ

26

Я считаю, что это делает:

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Это есть встроенные шаблоны для вещей, как URL-адрес и адрес электронной почты, и я думаю, что вы можете иметь его использовать свой собственный, а также.

+1

Но как насчет общего соответствия регулярному выражению? Возможно, что-то вроде поиска регулярного выражения в некотором тексте и т. Д. – 2008-12-05 21:34:07

+12

Ну, я имею в виду, что вы всегда можете просто использовать регулярное выражение javascript прямо, если это все, что вам нужно сделать ... http://www.regular-expressions.info/javascript ,html – 2008-12-05 21:38:33

+7

Это только я, или у JQUERY есть ужасный сайт? Я не могу с легкостью найти, как использовать или загружать эту вещь. – Jason 2011-01-31 17:32:37

26

Если вы ищете что-то конкретное, вы уже можете выполнять регулярное выражение, используя обычный Javascript со строками.

Например, вы можете сделать согласование, используя строку что-то вроде этого ...

var phrase = "This is a phrase"; 
phrase = phrase.replace(/is/i, "is not"); 
alert(phrase); 

Есть ли что-то, что вы ищете другое, чем просто регулярные выражения в целом?

82

Если вы хотите найти некоторые элементы на основе регулярного выражения, вы можете использовать функцию 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+/); 
}); 
29

Я использую JQuery и JavaScript, и она отлично работает для меня:

var rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
if(rege.test($('#uemail').val())){ //do something } 
2

Мой код:

$("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(); 
      } 
     }); 
-1

От jquery.validate.js (автор: joern), внесенный Scott Gonzalez: 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 

Голодные для спагетти?

Смежные вопросы