【发布时间】:2012-11-10 03:21:53
【问题描述】:
我已经阅读了this question,但是对于 Discover 卡,起始数字是 6011, 622126-622925, 644-649, 65 而不仅仅是 6011, 65。 (Source)
对于发现卡,我从那个问题^6(?:011|5[0-9]{2})[0-9]{12}$ 中选择了这个正则表达式
我对其进行了修改以涵盖6011、644-649& 65,但对于622126-622925,构建正则表达式很难,因为我的正则表达式技能很差。
到目前为止,我有这个正则表达式 6(?:011|5[0-9]{2}|[4][4-9][0-9]|[2]{2}[1-9])[0-9]{2}$,但它只检查 622[1-9]**。
如何修改它以使其仅在 622126-622925 之间接受 622*** 案例?
【问题讨论】:
-
你能不能只使用普通的 Discover Regex 并在下一行以更易读的方式进行检查?
-
有什么理由不使用非正则表达式数字比较?
-
@YuriyFaktorovich 抱歉没听明白。你的意思是格式化我上面的问题或分两步解决它?如果是后者,我更喜欢使用单个正则表达式。
-
@djechlin 我可以这样做,但是现在所有信用卡检查都是通过正则表达式进行的,并且由于正则表达式技能不佳而切换到整数比较似乎对我的代码不公平。
-
我的意思是分两步解决它。如果您创建这个复杂的、几乎不可读的正则表达式,因为您没有在其中使用 cmets,任何更改都将非常浪费时间。您还浪费时间尝试使用 Regex 进行数字比较。基本上你是在用锤子敲打螺丝。
标签: regex