西尔斯信用卡以 50 开头——正则表达式失败
Posted
技术标签:
【中文标题】西尔斯信用卡以 50 开头——正则表达式失败【英文标题】:sears credit card starts with 50 -- fails regex 【发布时间】:2012-11-01 07:00:07 【问题描述】:大多数信用卡正则表达式将万事达卡列为以 5 开头,然后将 1-5 作为第二个数字,尽管这个来自 sears,前四个数字是 5049。我真的不想在不知道是否使用任何其他非约定的情况下更改正则表达式。有谁知道更改它是否非常安全,或者是否还需要进行其他更改?
提前致谢!
【问题讨论】:
【参考方案1】:你的 RegEx 有问题 :-) [编辑:如果你想支持 Sears 卡,这是你问题的前提]
***上有一个准确的发行人编号列表:
http://en.wikipedia.org/wiki/List_of_Issuer_Identification_Numbers
其中包括 Sears 的 5049。
我建议为每个列出的发行人编号创建一个或多个单元测试,并使用这些单元测试验证您的 RegEx。
更新
有很多被广泛接受的以“50”开头的信用卡,所以如果你的 RegEx 断言第二个数字在 1-5 范围内,它仍然是错误的。
示例(来自 Wiki 链接):
500235 National Bank of Canada
500766 Bank of Montreal
如果您销售的商品允许出售给公益金接受者(例如福利接受者),则还包括 EBT 卡,例如:
507683 Missouri EBT Card
【讨论】:
以上是关于西尔斯信用卡以 50 开头——正则表达式失败的主要内容,如果未能解决你的问题,请参考以下文章
求一个匹配 以指定字符开头,指定字符结尾,中间内容任意的正则表达式