Ich verwende das jQuery- Validierungs-Plugin . Tolles Zeug! Ich möchte meine vorhandene ASP.NET-Lösung migrieren, um jQuery anstelle der ASP.NET-Validatoren zu verwenden. Mir fehlt ein Ersatz für den Validator für reguläre Ausdrücke . Ich möchte in der Lage sein, so etwas zu tun:
$("Textbox").rules("add", { regularExpression: "^[a-zA-Z'.\s]{1,40}$" })
Wie füge ich eine benutzerdefinierte Regel hinzu , um dies zu erreichen?
jquery
regex
jquery-validate
PeterFromCologne
quelle
quelle
Antworten:
Dank der Antwort von redsquare habe ich eine Methode wie diese hinzugefügt:
Jetzt müssen Sie nur noch Folgendes tun, um sich gegen Regex zu validieren:
Außerdem sieht es so aus, als gäbe es eine Datei namens Additional-Methods.js, die die Methode "Muster" enthält, die ein RegExp sein kann, wenn sie mit der Methode ohne Anführungszeichen erstellt wird.
Bearbeiten
Die
pattern
Funktion ist jetzt der bevorzugte Weg, um dies zu tun. Beispiel:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.js
quelle
Sie können die addMethod () verwenden
z.B
guter Artikel hier https://web.archive.org/web/20130609222116/http://www.randallmorey.com/blog/2008/mar/16/extending-jquery-form-validation-plugin/
quelle
Ich hatte einige Probleme, alle Teile für einen jQuery-Validator für reguläre Ausdrücke zusammenzustellen, aber ich habe es zum Laufen gebracht ... Hier ist ein vollständiges Arbeitsbeispiel. Es verwendet das 'Validation'-Plugin, das sich im jQuery Validation Plugin befindet
quelle
Kein Grund, den regulären Ausdruck als Zeichenfolge zu definieren.
und
Ist das besser so, nein?
quelle
var re = new RegExp(regexp);
Die Antwort von PeterTheNiceGuy etwas erweitern:
Auf diese Weise können Sie ein Regex-Objekt an die Regel übergeben.
Das Zurücksetzen der
lastIndex
Eigenschaft ist erforderlich, wenn dasg
Flag für dasRegExp
Objekt gesetzt ist. Andernfalls wird die Validierung ab der Position der letzten Übereinstimmung mit diesem regulären Ausdruck gestartet, selbst wenn die Betreffzeichenfolge unterschiedlich ist.Einige andere Ideen, die ich hatte, waren, Ihnen die Verwendung von Regex-Arrays zu ermöglichen, und eine andere Regel für die Negation von Regex:
Aber diese umzusetzen wäre vielleicht zu viel.
quelle
Wie in der addMethod-Dokumentation erwähnt :
Bitte beachten Sie: Während die Versuchung groß ist, eine Regex-Methode hinzuzufügen, die ihren Parameter mit dem Wert vergleicht, ist es viel sauberer, diese regulären Ausdrücke in ihrer eigenen Methode zu kapseln. Wenn Sie viele leicht unterschiedliche Ausdrücke benötigen, versuchen Sie, einen gemeinsamen Parameter zu extrahieren. Eine Bibliothek mit regulären Ausdrücken: http://regexlib.com/DisplayPatterns.aspx
Ja, Sie müssen für jeden regulären Ausdruck eine Methode hinzufügen. Der Overhead ist minimal, während Sie dem regulären Ausdruck einen Namen (nicht zu unterschätzen), eine Standardnachricht (praktisch) und die Möglichkeit geben können, ihn an verschiedenen Stellen wiederzuverwenden, ohne den regulären Ausdruck selbst immer wieder zu duplizieren.
quelle
Ich habe es so gemacht:
Stellen Sie sicher, dass der reguläre Ausdruck zwischen
/
:-) liegtquelle
Sie können
pattern
in deradditional-methods.js
Datei definiert verwenden. Beachten Sie, dass diese Datei "Additional-methods.js" nach der jQuery Validate-Abhängigkeit enthalten sein muss. Dann können Sie sie einfach verwendenquelle
Dies ist Arbeitscode.
quelle
Wir verwenden hauptsächlich die Markup-Notation des JQuery-Validierungs-Plugins und die veröffentlichten Beispiele haben bei uns nicht funktioniert, wenn Flags im regulären Ausdruck vorhanden sind, z
Deshalb verwenden wir das folgende Snippet
Natürlich könnte man jetzt diesen Code mit einem der oben genannten kombinieren, um auch die Übergabe von RegExp-Objekten an das Plugin zu ermöglichen, aber da wir ihn nicht brauchten, haben wir diese Übung dem Leser überlassen ;-).
PS: Dafür gibt es auch ein Plugin, https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/pattern.js
quelle
Dies funktionierte für mich als eine der Validierungsregeln:
Ich hoffe es hilft
quelle