2016-08-17 13 views
1

Ich versuche, eine Komponente ähnlich wie Google Play-Kreditkarte zu bauen und fügte hinzu:Überprüfen Sie, ob ein Teil des Textes passt ein regex

demo

Wenn der Benutzer startet die Kreditkartennummer eingeben, und nur die Kredit Kartenbilder, die sichtbar bleiben, gehören zu den Karten, die Teil des Kreditkartennummernmusters sind.

Zum Beispiel:

Mit Blick auf Mastercard regex:^5 [1-5] [0-9] {14} $

Wenn der Benutzer Typen "5", "53", „531 ", sollte das Bild der Masterkarte sichtbar sein.

Ich denke, es kann mit Pattern und Matcher Klasse gemacht werden, aber wie?

Verwenden match() Methode ist nicht gut, da es versucht, gegen alle Muster zu entsprechen.

Vielen Dank im Voraus!

+0

Try '^ 5 ([1-5] [0-9] {} 0,14)?$ ' –

Antwort

0

Wenn Sie ein Muster für die Live-Validierung möchten, können Sie

^5([1-5][0-9]{0,14})?$ 

die regex demo nachschauen.

Hinweis Sie können es nicht für final Zeichenfolge Validierung verwenden, müssen Sie Ihre aktuelle Regex dafür verwenden.

Die Hauptsache bei einem Regex für die Validierung von Live-Eingaben ist, dass das nächste Zeichen nur dann zulässig ist, wenn das vorherige Zeichen übereinstimmt, und das ist bei verschachtelten optionalen Gruppen möglich. Da Sie nur 3 Teile haben: 1) die erste obligatorische 5, dann 1 bis 5 Ziffer, und dann alle 0 bis 14 Ziffern, können Sie nur eine optionale Gruppe um [1-5][0-9]{0,14} Muster verwenden und stellen Sie sicher, dass Sie Null oder bis zu 14 anderen erlauben Ziffern.

Einzelheiten:

  • ^ - Beginn der Zeichenfolge
  • 5 - obligatorische 5
  • ([1-5][0-9]{0,14})? - eine optionale Sequenz (1 oder 0 Vorkommen) von:
    • [1-5] - a Ziffer von 1 bis 5
    • [0-9]{0,14} - jede Null Forteen Ziffern
  • $ - Ende der Zeichenfolge.
0

Verwenden Sie Ihre Muster für die Aktivierung der Taste
und diese für das Bild

^5[1-5][0-9]{0, 14}$ 
+0

Das'^5 [1-5] [0-9] {0, 14} $ 'erlaubt' 5' nicht, weil '[1-5]' obligatorisch ist. Es hat auch einen ungültigen Begrenzer (Grenze/Bereich) Quantifizierer. –

Verwandte Themen