Javascript正则表达式检测可能的信用卡号码

时间:2009-07-23 23:11:58

标签: javascript regex credit-card

我在制作适当的正则表达式或正则表达式时遇到了麻烦。

我想做的是检测:

  • 检测长度为13到19
  • 的连续数字运行
  • 检测穿插有长度为13到19
  • 的空白的连续数字
  • 检测穿插有长度为13到19的短划线的数字连续数字

基本业务要求是警告用户他们可能在文本字段中输入了信用卡号,他们不应该这样做(尽管只是警告,而不是硬错误)。文本字段可以跨越多行,可以长达8k,CC#可以嵌入任何地方(不太可能分成多行),可能超过1个CC#(虽然检测 prescence 至少1是我需要的。我不需要实际值)。不需要验证校验位。

长度检查可以在外部进行...即我很乐意循环一组匹配,删除任何空格/破折号,然后进行长度比较。

但是... JavaScript正则表达式正在击败我的每一次尝试(只是没有在正确的“头部空间”)所以我想我会在这里问:)

谢谢!

5 个答案:

答案 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)

这是许多信用卡验证步骤的绝佳脚本。

http://javascript.internet.com/forms/val-credit-card.html

答案 4 :(得分:0)

/(?:\d[ -]?){12,18}\d/

检查13-19位数字,每个数字(除了最后一个)之后可能有空格或短划线。不过,这是一个非常自由的正则表达式,您可能希望将其缩小到已知的实际信用卡格式。