Regex 信用卡正则表达式

Regex 信用卡正则表达式,regex,Regex,我需要一个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 至50

我需要一个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

您可以尝试以下方法:

^(?: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}$

简单解释

  • ^
    行的开头
  • 组的开始
  • ?:
    不会将其存储在组中
  • 40117[8-9]
    表示40117后跟8到9之间的任何值(相同 (适用于类似情况)
  • |
    表示或
  • 5067[0-6]\d
    表示5067+0到6之间的数字+单个数字 (任何)
  • \d{10}
    表示它将查看接下来的10个字符是否为数字(在前6个有效数字之后)
  • $
    行尾

  • 基本上,您需要使用一些范围操作符来缩短正则表达式

    最棘手的部分是定义范围
    506699到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}$
    
    演示:


    注意:
    (?x)
    用于允许在正则表达式中使用空格字符,这简化了对日志表达式的读取。

    使用另一种方法,需要做一些额外的工作来覆盖您拥有的两个数字范围

    ^(?: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
    
    此处演示:


    (p)你以前有没有使用过regex的替代物呢?@timbiegegeleeisen nopeThis是nopeThis是一个在Elo工作的朋友给我的一个在Elo工作的朋友给我的RegExp这是一个在Elo工作的朋友给我的RegExp,这是一个在Elo工作的朋友给我的Regepethis是:://^((431271271274)(431274-1274)1241241274 4)(431274(431274)(431274)(438935);(438935);(438935)124;(438935)124124;(438935)124124;(458935)124;(4554545454545454;(458935);(451416);(451416);(451416);(451416);(451416);(451416)(451416)(451416);(4574| 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]))/您可以验证16位数字:@RicardoMartins您的模式是唯一对我有效的模式。您的演示链接不包括您的所有样本!thanks@Tim比格莱森