我在制作适当的正则表达式或正则表达式时遇到了麻烦。
我想做的是检测:
基本业务要求是警告用户他们可能在文本字段中输入了信用卡号,他们不应该这样做(尽管只是警告,而不是硬错误)。文本字段可以跨越多行,可以长达8k,CC#可以嵌入任何地方(不太可能分成多行),可能超过1个CC#(虽然检测 prescence 至少1是我需要的。我不需要实际值)。不需要验证校验位。
长度检查可以在外部进行...即我很乐意循环一组匹配,删除任何空格/破折号,然后进行长度比较。
但是... JavaScript正则表达式正在击败我的每一次尝试(只是没有在正确的“头部空间”)所以我想我会在这里问:)
谢谢!
答案 0 :(得分:2)
以下是所有rules required for credit card validation。您应该可以在Javascript中轻松完成此操作。
答案 1 :(得分:1)
看起来像一个相当简单的正则表达式。我已经使你的要求更加严格了 - 因为它是,你匹配日期列表,例如“1999-04-02 2009-12-09 2003-11-21”。我假设这些部分将分为三到六组,并且它们本身就是三到八个数字/短划线/空格的组。你可以很容易地调整这些数字。
/[0-9]{13,19}|([0-9- ]{3,8}){3,6}/
我不确定这是你想要的,但我觉得值得一试。如果这不是您正在寻找的,也许您可以向我们展示一些接近或者给您一个想要的印象?
答案 2 :(得分:1)
你想用Javascript正则表达8k的文本吗?不要浪费你的时间(或用户差的CPU)用Javascript做这件事。无论如何你都需要服务器端验证,所以就这样吧。
答案 3 :(得分:1)
这是许多信用卡验证步骤的绝佳脚本。
答案 4 :(得分:0)
/(?:\d[ -]?){12,18}\d/
检查13-19位数字,每个数字(除了最后一个)之后可能有空格或短划线。不过,这是一个非常自由的正则表达式,您可能希望将其缩小到已知的实际信用卡格式。