webentwicklung-frage-antwort-db.com.de

Regex für das Zulassen von alphanumerischen Zeichen, -, _ und Leerzeichen

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.

27
rahul

Versuchen Sie diese Regex:

/^[a-z\d\-_\s]+$/i
38
elclanrs

Zeichensätze hilft hier eine Menge. Sie möchten einen passenden Satz für die Zeichen erstellen, die Sie validieren möchten:

  • Sie können alphanumerische Zeichen mit einem \w abgleichen, der mit [A-Za-z0-9_] in JavaScript identisch ist (andere Sprachen können abweichen).
  • Das lässt - 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)
    • Beachten Sie, dass ich - als \- ausliege, damit die Regex-Engine es nicht mit einem Zeichenbereich wie A-Z verwechselt.
  • Zuletzt möchten Sie wahrscheinlich sicherstellen, dass die gesamte Zeichenfolge mit durch Verankerung dem Anfang und Ende über ^ 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.

68
Nevir
/^[-\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].)

9
cbayram
var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)
6
nkamm
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.

2
Asif Khan

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. 

  1. ABC123
  2. ABC 123
  3. ABC123 (Leerzeichen)
  4. ABC 123 (Leerzeichen)

So endete ich mit dem Schreiben von benutzerdefinierten Regex wie folgt.

/^([a-z]+[\s]*[0-9]+[\s]*)+$/i

 enter image description here

Hier habe ich * in [\s]* angegeben, da kein Leerzeichen erforderlich ist. Eine Postleitzahl kann in meinem Fall Platz enthalten oder nicht. 

0
Sibeesh Venu

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

0
kva