您会看到我正在尝试验证信用卡/借记卡号码,但每 3 或 4 个号码中有空格。假设我有这个信用卡/借记卡号,其中包含三个空格作为分隔符:
// american express => patrón [4,6,5]
3400[]000000[]00009
// discover => patrón [4,4,4,4]
6011[]0000[]0000[]0004
// mastercard => patrón [4,4,4,4]
5500[]0000[]0000[]0004
// visa => patrón [4,4,4,4]
4111[]1111[]1111[]1111
// los corchetes son representaciónes de un espacio dependiendo del patrón asignado
我以数组的形式添加了一些模式,在美国运通的情况下,模式是,前 4 位数字用空格分隔,然后是接下来的 6 位数字,空格后跟最后 5 位数字。
在 Discover、MasterCard 和 Visa 的情况下,模式是每 4 位数字用一个空格隔开,然后是下一个 4 位,依此类推,直到达到最后四位数字。正如我在上面展示的那样。
多个正则表达式仅验证如下:
// american expresa
340000000000009
// discover
6011000000000004
// mastercard
5500 0000 0000 0004
// visa
4111111111111111
此功能根据卡的类型验证卡号,每 3 或 4 个数字之间有空格作为分隔符。在这种情况下,我在一个正则表达式中验证了 4 种类型的卡,它们是 American Express、Discover、MasterCard 和 Visa。
function validCard(input) {
var valid;
var regex = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|6(?:011|5[0-9][0-9])[0-9]{12})$/;
if (regex.test(input)) {
valid = true;
} else {
valid = false;
}
return valid;
}
var input = "4111 1111 1111 1111";
valid card(input); // return false
还使用@Ali 推荐的正则表达式,但添加一个 or 来验证美国运通卡的数字
var regex = /^(?:(\d{4}\s?){4}|(\d{4,6}\s?){3})$/
我们可以通过对特定金额使用 {} 来做到这一点:
[0-9]{15,16}
: 表示 15 或 16 位数字|
:表示“或”()
: 我们使用括号对以下表达式进行分组。[0-9]{4}\s
: 4 位数字后跟空格([0-9]{4}\s){3}
: 4 位数字后跟空格,3 次[0-9]{3,4}
: 只有 3 或 4 位数字。如果你不想要求你总是每 4 位有空格,也就是说,允许这样的东西
0000 00000000000000
,事情变得更容易因此,我们说(4 位可选地后跟一个空格)4 次。
版:
在您编辑问题之前,您的格式以 3 位数字结尾,现在以 5 位数字结尾,如果空格在哪里无关紧要,您可以使用以下内容:
\d
:指定单个数字,如 [0-9]\s?
: 可选地指定一个空格(\d\s?)
: 它是一个数字,后面可能有也可能没有空格{15,16}
: 只能有 15 位或 16 位带空格的数字。如果您有兴趣验证空格是否位于特定位置,请尝试使用此正则表达式。
你在这里有一个演示
所以我会验证以下内容:
但不是其他格式错误的数字,例如: