Ich suche nach einem regulären Ausdruck, um alphanumerische Zeichen, -, _ oder Leerzeichen in JavaScript/jQuery zuzulassen. Ich habe Googling ausprobiert, konnte das aber nicht finden.
Kann mir jemand dabei helfen?
Danke im Voraus.
Versuchen Sie diese Regex:
/^[a-z\d\-_\s]+$/i
Zeichensätze hilft hier eine Menge. Sie möchten einen passenden Satz für die Zeichen erstellen, die Sie validieren möchten:
\w
abgleichen, der mit [A-Za-z0-9_]
in JavaScript identisch ist (andere Sprachen können abweichen).-
und Leerzeichen, die zu einer passenden Menge wie [\w\- ]
kombiniert werden können. Möglicherweise möchten Sie jedoch die Verwendung von \s
anstelle des Leerzeichens in Betracht ziehen (\s
entspricht auch Tabulatoren und anderen Formen von Leerzeichen) -
als \-
ausliege, damit die Regex-Engine es nicht mit einem Zeichenbereich wie A-Z
verwechselt.^
und $
übereinstimmt.Der vollständige reguläre Ausdruck, nach dem Sie wahrscheinlich suchen, lautet:
/^[\w\-\s]+$/
(Beachten Sie, dass der +
angibt dass es mindestens Zeichen geben muss, damit es übereinstimmt; verwenden Sie stattdessen einen *
, wenn auch ein String mit der Länge Null in Ordnung ist)
Schließlich ist http://www.regular-expressions.info/ eine großartige Referenz
Bonuspunkte: Dieser reguläre Ausdruck stimmt nicht mit Nicht-ASCII-Alphas überein . Leider unterstützt die Regex-Engine in den meisten Browsern keine benannten Zeichensätze aber es gibt einige Bibliotheken, die dabei helfen .
Für Sprachen/Plattformen, die benannte Zeichensätze unterstützen, können Sie /^[\p{Letter}\d\_\-\s]+$/
verwenden.
/^[-\w\s]+$/
\w entspricht buchstaben, Ziffern und unterstrichen
\s stimmt mit Leerzeichen, Tabs und Zeilenumbrüchen überein
- stimmt mit dem Bindestrich überein (Wenn Sie einen Bindestrich in Ihrem Zeichensatzbeispiel [a-z] haben, stellen Sie sicher, dass der Bindestrich wie am Anfang steht; [-a-z].)
var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)
var regex = new RegExp("^[A-Za-z0-9? ,_-]+$");
var key = String.fromCharCode(event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
im RegExp [A-Za-z0-9?spaceHere,_-]
gibt es nach dem Fragezeichen '?' ein Leerzeichen. Dies entspricht dem Platz. Andere wie /^[-\w\s]+$/
und /^[a-z\d\-_\s]+$/i
haben für mich nicht funktioniert.
Für mich wollte ich einen Regex, der wie zuvor eine Saite unterstützt. Grundsätzlich soll das Postformat einiger Länder unterstützt werden, da es sich um ein alphanumerisches Format handeln sollte, in dem Leerzeichen zulässig sind.
So endete ich mit dem Schreiben von benutzerdefinierten Regex wie folgt.
/^([a-z]+[\s]*[0-9]+[\s]*)+$/i
Hier habe ich * in [\s]*
angegeben, da kein Leerzeichen erforderlich ist. Eine Postleitzahl kann in meinem Fall Platz enthalten oder nicht.
Probieren Sie diesen regulären Ausdruck
* Regex aktualisiert
/^[a-z0-9]+([-_\s]{1}[a-z0-9]+)*$/i
Dies lässt nur ein Leerzeichen oder - oder _ zwischen dem Text zu
Ex: this-some abc123_regex
Um zu lernen: https://regexr.com
* Hinweis: Ich habe den regulären Ausdruck basierend auf der Toto-Frage aktualisiert