ELO信用卡正则表达式



我需要ELO信用卡的正则表达式,该表达式应仅允许下面提到第6位。总长度为16,所有16个应仅为数字。字母不允许。

允许前缀:

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

使用交替,并进行一些额外的工作来覆盖您拥有的两个数值范围。

^(?: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]|509d{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
509d{3}           matches 509000 through and including 509999
                   i.e. 509 followed by any 3 digits

演示:

REGEX101

您可以尝试以下方法:

^(?: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]|509d{3})d{10}$

演示

简单说明

  1. ^线的开始
  2. (组开始
  3. ?:不会将其存储在组中
  4. 40117[8-9]表示40117,然后是8到9之间的任何东西(相同 适用类似)
  5. |表示或
  6. 5067[0-6]d表示5067 一个数字在0到6 一个数字之间 (任何)
  7. d{10}意味着它将查看接下来的10个字符是否是数字(以前有效的6位数字)
  8. $线的结尾

基本上,您需要与某些范围运算符交替来缩短正则义务。

最棘手的部分是定义范围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]
    |509d{3}
)d{10}$

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

nb:(?x)用于允许在正时线中使用空格字符,这简化了对日志表达式的阅读。

最新更新