Validation du champ d’expression régulière dans jQuery

Dans jQuery, existe-t-il une fonction / un plug-in que je peux utiliser pour associer une expression régulière donnée dans une chaîne?

Par exemple, dans une zone de saisie de courrier électronique, j’obtiens une adresse électronique et je souhaite voir si le format est correct. Quelle fonction de jQuery dois-je utiliser pour voir si ma validation de l’expression régulière correspond à l’entrée?

J’ai cherché une solution sur Google, mais je n’ai rien trouvé.

Je crois que cela le fait:

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

Il contient des modèles intégrés pour des éléments tels que les URL et les adresses e-mail, et je pense que vous pouvez également les utiliser vous-même.

Si vous souhaitez rechercher des éléments basés sur une expression régulière, vous pouvez utiliser la fonction de filter . Par exemple, supposons que vous vouliez vous assurer que l’utilisateur n’a saisi que des chiffres dans toutes les zones de saisie. Trouvons donc toutes les entrées qui ne correspondent pas et les mettent en évidence.

 $("input:text") .filter(function() { return this.value.match(/[^\d]/); }) .addClass("inputError") ; 

Bien sûr, si c’était juste quelque chose comme ça, vous pourriez utiliser le plug-in de validation de formulaire, mais cette méthode pourrait être appliquée à n’importe quel type d’éléments. Un autre exemple pour montrer ce que je veux dire: trouver tous les éléments dont l’ id correspond /[az]+_\d+/

 $("[id]").filter(function() { return this.id.match(/[az]+_\d+/); }); 

J’utilise jQuery et JavaScript et ça marche bien pour moi:

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

A moins que vous ne cherchiez quelque chose de spécifique, vous pouvez déjà faire la correspondance avec Expression régulière en utilisant le langage Javascript standard avec des chaînes.

Par exemple, vous pouvez faire une correspondance en utilisant une chaîne par quelque chose comme ça …

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

Y a-t-il autre chose que la simple recherche d’une expression régulière en général?

Mon code:

 $("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 = Ssortingng.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(); } }); 

De jquery.validate.js (par joern), consortingbué par Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/

 /^((([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\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)))@((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i 

Assurez-vous de doubler le @@ si vous utilisez MVC Razor:

  /^((([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\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)))@@((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i 

Avoir faim de spaghetti?