【问题标题】:JavaScript RegEx format string containing American Express card number包含美国运通卡号的 JavaScript RegEx 格式字符串
【发布时间】:2014-12-05 18:50:50
【问题描述】:

我正在尝试使用正则表达式格式化包含美国运通信用卡号的字符串。这是我用于 Visa、MasterCard 和 Discover 号码格式的内容,但它显然不适用于美国运通:

var formatVisaMasterCardDiscover = function (
    number) {
    return number.split(/(?=(?:\d{4})+($))/).filter(function (
        n) {
        return (n != "");
    }).join("-");
};

所以,我很好奇美国运通号码的正则表达式是什么。格式应为{4}-{6}-{5}。我会很感激任何帮助,因为我在搜索时找不到任何东西,除了如何验证它不是我想要的。我想格式化它。

【问题讨论】:

  • 没有破折号,它是^3[47][0-9]{13}$

标签: javascript regex


【解决方案1】:

你可以使用:

var ccNum = '341256789012345';

var ccFmt = ccNum.replace(/\b(\d{4})(\d{6})(\d{5})\b/, '$1-$2-$3');
//=> 3412-567890-12345

RegEx Demo

【讨论】:

  • 漂亮!非常感谢。我更新了帖子中的另一个函数,使其以相同的方式工作,而不是它正在做的字符串拆分怪异。
  • 这仅适用于您测试完整的 15 个字符的卡号。我希望能够在您键入时进行格式化。我编写了这段代码以满足我的需求quercusv.github.io/smartForm
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2013-07-13
  • 1970-01-01
相关资源
最近更新 更多