Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 自定义信用卡正则表达式_Regex - Fatal编程技术网

Regex 自定义信用卡正则表达式

Regex 自定义信用卡正则表达式,regex,Regex,我正在使用具有以下条件的自定义信用卡验证器: 它必须以4、5或6开头 它必须正好包含16位数字 它只能由数字组成(0-9) 它可以有4个一组的数字,由一个连字符分隔- 它不能使用任何其他分隔符,如','等 它不能有4个或更多连续重复的数字 我找不到满足最后一个条件的正则表达式 对于其他条件,我有以下正则表达式: r'[456][0-9]{3}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}': 对于最后一个条件,您可以使用负片,断言后面不是一个数字,后面是可选的催眠和数字的3

我正在使用具有以下条件的自定义信用卡验证器:

  • 它必须以4、5或6开头
  • 它必须正好包含16位数字
  • 它只能由数字组成
    (0-9)
  • 它可以有4个一组的数字,由一个连字符分隔
    -
  • 它不能使用任何其他分隔符,如
    '
    '
  • 它不能有4个或更多连续重复的数字
我找不到满足最后一个条件的正则表达式

对于其他条件,我有以下正则表达式:

r'[456][0-9]{3}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}': 

对于最后一个条件,您可以使用负片,断言后面不是一个数字,后面是可选的催眠和数字的3倍或更多倍

添加部分的说明
(?![-\d]*([0-9])(?:-?\1){3,})

  • (?!)
    消极前瞻
    • [-\d]*
      匹配零次或多次数字或连字符
    • ([0-9])
      捕获组中的一个数字
    • (?:-?\1){3,}
      在非捕获组中重复3次或更多次可选连字符
      -?
      ,后跟一个到组1中捕获的数字的字符
  • 关闭反向前瞻
您的正则表达式中添加了锚,用于断言行的开始
^
和结束
$
,如下所示:


我怀疑任何真正的信用卡都会遵循这种模式。您能否更具体地说明可能存在多少分隔符,以及它们可能位于何处?您能否将其设置为两个正则表达式?一个用于检查前几个,一个用于检查最后一个条件?例如,
(\d)-?\1-?\1-?\1
应该匹配四个重复的数字(可能中间有-)。
它可能有一组的数字。。。你没说完那句话。什么是组?
regex
不是检查最后一个条件的合适工具。使用该语言提供的其他功能来检查它。@Thefourthbird谢谢这个正则表达式,你能解释一下吗