Maison  >  Article  >  interface Web  >  Deux méthodes d'épissage dynamique d'expressions régulières dans les compétences js_javascript

Deux méthodes d'épissage dynamique d'expressions régulières dans les compétences js_javascript

WBOY
WBOYoriginal
2016-05-16 16:57:252651parcourir

Méthode 1 :

Lorsque vous travaillez sur un projet, vous pouvez rencontrer le besoin d'utiliser js pour vérifier l'exactitude de la saisie du formulaire. Dans ce cas, vous devez utiliser des expressions régulières js. Par exemple : Par exemple, si vous souhaitez vérifier le mois, le format est : « aaaa-MM ». Cette expression régulière est très simple à écrire. Si vous ne pouvez vraiment pas l'écrire, vous pouvez également utiliser Google et Baidu. . Il y a beaucoup d'exemples sur Internet ! Cependant, si l'expression régulière js est écrite à mort de cette manière, cela entraînera également de nouveaux problèmes : que se passe-t-il si le format du mois du fichier de configuration est modifié ? Le remplacer par « aaaaMM » ou « aaaa_MM »... ? ? Devons-nous penser à changer encore et encore les expressions régulières dans js ? ?

À ce stade, nous devons nous demander : Comment pouvons-nous écrire des expressions régulières dynamiques ? Après avoir modifié le fichier de configuration, nous n'avons plus besoin de toucher au code ?

L'auteur a parcouru le manuel js et n'a pas trouvé de moyen de convertir la chaîne en expression régulière. Cependant, ce problème peut être résolu indirectement en utilisant la méthode eval(); Écrivant ainsi du code plus polyvalent !

La solution générale à l'exemple ci-dessus est publiée ci-dessous :

Copiez le code Le code est le suivant :

/**
* Vérifiez si la saisie du formulaire de mois est légale
* modèle : chaîne de format du mois
* id : identifiant du formulaire
*/
function validateMonth(pattern, id) {
var text = document.getElementById(id);
varmonthStr = text.value ;
var splitChar = ""
if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2); 4}" splitChar " \d{2}$/;");
//var re = /d{4}-d{2}$/;
if(monthStr.match(re) == null) {
alert("Veuillez vous référer au format [" modèle "] pour la saisie ! " "par exemple "2010" splitChar "11" ou "2010" splitChar "03"");
text.value = "";
text.focus();
return false;
}
return true;
}


Copier le code Le code est le suivant :
/**
* Vérifiez si la saisie du formulaire de mois est légale
* modèle : chaîne de format du mois
* id : identifiant du formulaire
*/
function validateMonth(pattern, id) {
var text = document.getElementById(id);
var MonthStr = text.value
var splitChar = "";
if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);
eval("var re = /\d{4} " splitChar " \d{2}$/;");
//var re = /d{4}-d{2}$/;
if(monthStr.match(re) == null) {
alert("Veuillez vous référer au format [" modèle "] pour la saisie ! " "par exemple "2010" splitChar "11" ou "2010" splitChar "03"");
text.value = "";
text.focus();
return false;
}
return true;
}

Une chose à noter : lorsque vous épelez dynamiquement une chaîne de script et la transmettez à la méthode eval() pour exécution, le caractère '' doit être échappé

Méthode 2 :

Copier le code Le code est le suivant :
<script> <br> var n=new Array( ".htm ", ".html ", ".shtml "); <br>//var pattern1 = new RegExp( "\w \ " n[0] "$ ", "gi ") ; <br>var s1= "b.shtml "; <br>var result = false <br>for(var i=0;i <n.length;i ) <BR>{ <BR>pattern1 = new RegExp( "\w \ " n[i] "$ ", "gi "); <BR>result|=pattern1.test(s1); <BR>alert(); Booléen(résultat)); <BR></script>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn