2017-04-07 2 views
-3

Ich habe eine Aufgabe, wo der Benutzer in der Lage sein sollte, die erste Zeile eines Adressfeldes zu bearbeiten, aber sie sollte nur ein Komma verwenden können, aber das Komma überall einfügen die Saite.Regex, um Zahlen und Ziffern, aber nur ein Komma zu erlauben

Ich fragte mich, ob es eine Möglichkeit gab, dass dies in JavaScript getan werden könnte?

bisher habe ich versucht:

^[a-zA-Z0-9\&\-\,\.\/\'_ ]+$ 

Aber diese Regex erlaubt mir mehrere Kommas eingeben.

Deshalb möchte ich die Regex dem Benutzer zu ermöglichen, dies zu tun:

21, Tash Platz N13 2ij

oder dies: , Tash Platz 21 N13 2ij

Aber nicht so:

21, Tash Place, N13, 2ij

Jede mögliche Hilfe würde

geschätzt werden 0
+3

Ja, wahrscheinlich. Hast du selbst etwas probiert? –

+0

Hast du es versucht ?. –

+0

Ja, es gibt ... – revo

Antwort

1

können Sie verwenden

/^[-a-zA-Z0-9&.\/'_ ]*(?:,[-a-zA-Z0-9&.\/'_ ]*)?$/ 

die regex demo See.

Hier

  • ^ - entspricht dem Beginn der Zeichenfolge,
  • [-a-zA-Z0-9&.\/'_ ]* - Streichhölzer 0+ Buchstaben, Ziffern oder -./'_ Symbole, dann
  • (?:,[-a-zA-Z0-9&.\/'_ ]*)? - eine optionale Sequenz (1 oder 0 Vorkommen) von:
    • , - ein Komma (also nur ein erlaubt ist)
    • [-a-zA-Z0-9&.\/'_ ]* - Streichhölzer 0+ Buchstaben, Ziffern oder -./'_ Symbole, dann
  • $ - Ende der Zeichenfolge.

Eine andere Möglichkeit ist es, eine (?!(?:[^,]*,){2}) negative Vorschau auf Ihre regex hinzuzufügen:

/^(?!(?:[^,]*,){2})[-a-zA-Z0-9&.\/',_ ]+$/ 
    ^^^^^^^^^^^^^^^^^ 

Siehe another regex demo

Die (?!(?:[^,]*,){2}) Look-Ahead wird das Spiel nicht, wenn es zwei Sequenzen von 0+ Zeichen andere als , und dann eine , in der Zeichenfolge.

+1

Das hat funktioniert. Vielen Dank – Cory

Verwandte Themen