代码之家  ›  专栏  ›  技术社区  ›  user53794

Javascript regex来检测可能的信用卡号码

  •  4
  • user53794  · 技术社区  · 15 年前

    我很难想出一个合适的正则表达式或一组正则表达式。

    我要做的是检测:

    • 检测长度为13到19的连续数字序列
    • 检测插入13到19长度空白的连续数字序列
    • 检测长度为13到19的破折号散布的连续数字序列

    基本的业务要求是警告用户,他们可能已经在文本字段中输入了信用卡号码,他们不应该这样做(虽然只是警告,不是硬错误)。文本字段可以跨多行,最长可达8k,可以将CC嵌入任何位置(不太可能跨多行拆分),也可以超过1cc(尽管检测到 先见之明 我只需要一个。我不需要实际价值)。不需要验证校验位。

    但是。。。JavaScript regex正在挫败我的每一次尝试(只是没有在正确的“头部空间”)所以我想我应该问一下:)

    5 回复  |  直到 15 年前
        1
  •  2
  •   Community Biraj Zalavadia    7 年前

    这些都是 rules required for credit card validation . 您应该能够在Javascript中轻松完成这项工作。

        2
  •  1
  •   Samir Talwar PruthviRaj Reddy    15 年前

    /[0-9]{13,19}|([0-9- ]{3,8}){3,6}/
    

    我不确定这是你想要的,但我觉得值得一试。如果这不是你要找的,也许你可以给我们展示一些接近的正则表达式,或者给我们一个你想要的印象?

        3
  •  1
  •   Josh Stodola    15 年前

    你想用Javascript来调整8k文本吗?不要浪费你的时间(或者用户糟糕的CPU)来使用Javascript。你无论如何都需要服务器端验证,所以就让它来吧。

        4
  •  1
  •   Chris Harris    15 年前

    这是一个伟大的脚本为许多信用卡验证步骤。

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

        5
  •  0
  •   Nick Lewis    15 年前
    /(?:\d[ -]?){12,18}\d/
    

    检查13-19个数字,每个数字(最后一个除外)后面可能有空格或破折号。不过,这是一个非常自由的regex,您可能希望将其缩小到已知的实际信用卡格式。