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])
在非捕获组中重复3次或更多次可选连字符(?:-?\1){3,}
,后跟一个到组1中捕获的数字的字符-?
关闭反向前瞻)
^
和结束$
,如下所示:
我怀疑任何真正的信用卡都会遵循这种模式。您能否更具体地说明可能存在多少分隔符,以及它们可能位于何处?您能否将其设置为两个正则表达式?一个用于检查前几个,一个用于检查最后一个条件?例如,
(\d)-?\1-?\1-?\1
应该匹配四个重复的数字(可能中间有-)。它可能有一组的数字。。。你没说完那句话。什么是组?regex
不是检查最后一个条件的合适工具。使用该语言提供的其他功能来检查它。@Thefourthbird谢谢这个正则表达式,你能解释一下吗