2016-08-17 39 views
1

我試圖建立一個組件類似於谷歌Play的信用卡添加:檢查文本的一部分相匹配的正則表達式

demo

當用戶開始輸入信用卡號碼,只有信用保持可見的卡片圖像是與信用卡號碼模式的一部分匹配的卡片。

例如:

綜觀萬事達正則表達式:^ 5 [1-5] [0-9] {14} $

如果用戶鍵入 「5」, 「53」,「531 「,主卡的圖像應該是可見的。

我想可以用Pattern和Matcher類來完成,但是怎麼做?

使用match()方法並不好,因爲它試圖匹配所有模式。

提前致謝!

+0

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

回答

0

如果你想現場驗證的模式,你可以使用

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

regex demo

請注意,您不能將它用於最後字符串驗證,您將不得不使用您當前的正則表達式。

實時輸入驗證的正則表達式的主要內容是,只有在前一個匹配的情況下,它才允許下一個字符,並且嵌套可選組是可能的。由於您只有3個部分:1)第一個強制5,然後15數字,然後是0到14位數字,您可以只使用一個圍繞[1-5][0-9]{0,14}模式的可選組,並確保您允許零或多達14個其他數字。

詳細

  • ^ - 串的開始
  • 5 - 強制性5
  • ([1-5][0-9]{0,14})? - 任選的序列的(1或0次):
    • [1-5] - 一個數字從15
    • [0-9]{0,14} - 任何零到forteen數字
  • $ - 字符串的結尾。
0

使用您的圖案用於活化的按鈕
並且這對於圖像

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

這個'^ 5 [1-5] [0-9] {0,14} $'不允許'5',因爲'[1-5]'是強制性的。它也有一個畸形的限制(範圍/量程)量詞。 –