2017-03-13 75 views
-2

我需要一個elo信用卡的正則表達式,它應該只允許前6位數字在下面提及。總長度將是16,全部16只應該是數字。字母不允許。ELO信用卡正則表達式

允許的前綴:

401178,401179,431274,438935,451416,457393,457631,457632, 504175,627780,636297,636368,655000,655001,651652,651653, 651654,650485 ,650486,650487,650488,506699到506778和509000 至509999

+0

你有沒有使用正則表達式之前的交替? –

+0

@TimBiegeleisen nope – sathwik

+0

這是在Elo工作的朋友給我的RegExp:/ ^((431274)|(438935)|(451416)|(457393)|(504175)|(627780)|(636297)| (636368)|(40117)[8-9] |(45763)[1-2] |(506)(699 | 7 [1-7] [1-8])|(509)[0-9] [ 0-9] [0-9] |(65003)[1-3] |(6500)(3 [5-9] | 4 [0-9] | 5 [0-1])|(6504)(0 [5-9] | 1 [0-9] | 2 [0-9] | 3 [0-9])|(650)(圖4(8 [5-9] | 9 [0-9])| 5 ([0-2] [0-9] | 3 [0-8]))|(6505)(4 [1-9] | [5-8] [0-9] | 9 [0-8]) |(6507)(0 [0-9] | 1 [0-8])|(65072)[0-7] |(6509)(0 [1-9] | 1 [0-9] | 20)| (6516)(5 [2-9] | [6-7] [0-9])|(6550)[0-1] [0-9] |(6550)(2 [1-9] | [3 -4] [0-9] | 5 [0-8]))/ –

回答

0

你可以試試這個:

^(?:40117[8-9]|431274|438935|451416|457393|45763[1-2]|504175 
|627780|636297|636368|65500[0-1]|65165[2-4]|65048[5-8]|506699 
|5067[0-6]\d|50677[0-8]|509\d{3})\d{10}$ 

Demo

簡單解釋

  1. ^行開始
  2. (組開始
  3. ?:不能將其存放在組中
  4. 40117[8-9]意味着隨後40117 8之間的任何東西到9(相同 適用於同類者)
  5. |裝置OR
  6. 5067[0-6]\d裝置5067 + 6 +單個數字 (任何)
  7. \d{10} 0之間的一個數字意味着它將看到,如果下一個10個字符是數字(先前有效6位之後)的行的
  8. $
1

基本上,你需要與一些範圍運算符交替來縮短正則表達式。

最棘手的部分是定義範圍506699 to 506778,它可以表示爲506699|5067[06]\d|50677[0-8]

(?x)^(?: 
    40117[89]|431274|438935|451416|457393|457631|457632|504175 
    |627780|636297|636368|65500[01]|65165[234]|65048[5-8] 
    |506699|5067[06]\d|50677[0-8] 
    |509\d{3} 
)\d{10}$ 

演示:https://regex101.com/r/BbnHeQ/2

NB:所述(?x)用於允許在正則表達式,這簡化了讀取日誌表達式空格字符。

2

使用一種替代方法,用一些額外的工作來覆蓋你所擁有的兩個數值範圍。

^(?:401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636368| 
    655000|655001|651652|651653|651654|650485|650486|650487|650488|506699|5067[0-6][0-9]| 
    50677[0-8]|509\d{3})\d{10}$ 

這裏是我們如何處理兩個範圍:

506699 to 506778 

506699|   matches 506699 
5067[0-6][0-9]| matches 506700 through and including 506769 
50677[0-8]   matches 506770 through and including 506778 

509000 to 509999 

509\d{3}   matches 509000 through and including 509999 
        i.e. 509 followed by any 3 digits 

演示在這裏:

Regex101

+0

您的演示鏈接不包含您的所有示例! –

+0

謝謝@ Tim Biegeleisen – sathwik