【发布时间】:2020-06-08 04:45:24
【问题描述】:
我被正则表达式函数困住了。开发它以达到现在的水平非常有趣,但我似乎无法进一步改进它,即使使用其他在线示例也是如此。
我有以下正则表达式函数,用于检测 16 位卡号,
(?<=^|[^0-9])[0-9]{16}(?=[^0-9]|$)|[0-9]{4}[-| |_][0-9]{4}[-| |_][0-9]{4}[-| |_][0-9]{4}
此函数检测以下结果,
1) 1234123412341234(共16位)
2) 1234 1234 1234 1234
3) 1234-1234-1234-1234(带有连字符和空格的卡号)
4) Find me 1234-1234-1234-1234 Find me (卡号隐藏在文字中)
我正在努力阻止的是我得到的误报,我知道这是实现上述结果 4 的直接结果。误报超过 16 位,显然不是卡号。例如
1) 1234-1234-1234-1234-1234
当它检测到字符串中的前 16 位数字时,正则表达式会返回该值。我创建了一个过滤掉这些误报的程序,但我认为值得看看是否有人可以改进上述内容,以便其他人可以使用正则表达式功能。由于互联网上的其他示例似乎并没有为我做这项工作。
【问题讨论】:
标签: regex