J'utilise le plugin de validation jQuery . Super truc! Je souhaite migrer ma solution ASP.NET existante pour utiliser jQuery au lieu des validateurs ASP.NET. Il me manque un remplacement pour le validateur d' expression régulière . Je veux pouvoir faire quelque chose comme ça:
$("Textbox").rules("add", { regularExpression: "^[a-zA-Z'.\s]{1,40}$" })
Comment ajouter une règle personnalisée pour y parvenir?
jquery
regex
jquery-validate
PeterFromCologne
la source
la source
Réponses:
Grâce à la réponse de redsquare j'ai ajouté une méthode comme celle-ci:
maintenant, tout ce que vous devez faire pour valider contre toute expression régulière est le suivant:
De plus, il semble qu'il existe un fichier appelé additional-methods.js qui contient la méthode "pattern", qui peut être un RegExp lorsqu'il est créé à l'aide de la méthode sans guillemets.
Éditer
La
pattern
fonction est désormais le moyen préféré de le faire, ce qui donne l'exemple:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.js
la source
Vous pouvez utiliser la méthode addMethod ()
par exemple
bon article ici https://web.archive.org/web/20130609222116/http://www.randallmorey.com/blog/2008/mar/16/extending-jquery-form-validation-plugin/
la source
J'ai eu du mal à rassembler toutes les pièces pour faire un validateur d'expressions régulières jQuery, mais je l'ai fait fonctionner ... Voici un exemple de travail complet. Il utilise le plugin 'Validation' qui se trouve dans le plugin de validation jQuery
la source
Aucune raison de définir l'expression régulière comme une chaîne.
et
c'est mieux comme ça, non?
la source
var re = new RegExp(regexp);
dans la fonctionÉtendre un peu la réponse de PeterTheNiceGuy:
Cela vous permettrait de passer un objet regex à la règle.
La réinitialisation de la
lastIndex
propriété est nécessaire lorsque leg
drapeau est défini sur l'RegExp
objet. Sinon, il commencerait à valider à partir de la position de la dernière correspondance avec cette expression régulière, même si la chaîne du sujet est différente.Quelques autres idées que j'avais était de vous permettre d'utiliser des tableaux de regex, et une autre règle pour la négation des regex:
Mais leur mise en œuvre serait peut-être trop.
la source
Comme mentionné dans la documentation addMethod :
Remarque: Bien que la tentation soit grande d'ajouter une méthode d'expression régulière qui vérifie son paramètre par rapport à la valeur, il est beaucoup plus propre d'encapsuler ces expressions régulières dans leur propre méthode. Si vous avez besoin de nombreuses expressions légèrement différentes, essayez d'extraire un paramètre commun. Une bibliothèque d'expressions régulières: http://regexlib.com/DisplayPatterns.aspx
Alors oui, vous devez ajouter une méthode pour chaque expression régulière. Les frais généraux sont minimes, tout en vous permettant de donner un nom (à ne pas sous-estimer) au regex, un message par défaut (pratique) et la possibilité de le réutiliser à divers endroits, sans dupliquer le regex lui-même encore et encore.
la source
Je l'ai fait fonctionner comme ceci:
Assurez-vous que l'expression régulière se situe entre
/
:-)la source
Vous pouvez utiliser
pattern
défini dans leadditional-methods.js
fichier. Notez que ce fichier additional-methods.js doit être inclus après la dépendance jQuery Validate, alors vous pouvez simplement utiliserla source
C'est du code qui fonctionne.
la source
nous utilisons principalement la notation de balisage du plugin de validation jquery et les exemples publiés ne fonctionnaient pas pour nous, lorsque des drapeaux sont présents dans l'expression régulière, par exemple
nous utilisons donc l'extrait de code suivant
Bien sûr, maintenant, on pourrait combiner ce code, avec l'un des ci-dessus pour permettre également de passer des objets RegExp dans le plugin, mais comme nous n'en avions pas besoin, nous avons laissé cet exercice au lecteur ;-).
PS: il existe également un plugin fourni pour cela, https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/pattern.js
la source
Cela a fonctionné pour moi, étant l'une des règles de validation:
J'espère que ça aide
la source