带空格的正则表达式Visa +万事达卡需要添加美国运通卡

时间:2017-02-24 12:32:03

标签: regex forms validation

我有这个正则表达式来验证Visa和万事达卡的空格,它非常完美。

^(?:4\d{3}|5[1-5]\d{2}|6011|3[47]\d{2})([- ]?)\d{4}\1\d{4}\1\d{4}$

签证

4111111111111111 = true

4111 1111 1111 1111 = true

5500000000000004 = true

5500 0000 0000 0004 = true

美国运通

340000000000009 = false

3400 0000 0000 009 = false

我需要将Amex添加到正则表达式,我需要最后两个真的,有人可以帮我吗? 谢谢!

2 个答案:

答案 0 :(得分:4)

(假设4111111111111111 = false是拼写错误)

您可以使用以下正则表达式

^(?:4\d{3}|5[1-5]\d{2}|6011|3[47]\d{2})([-\s]?)\d{4}\1\d{4}\1\d{3,4}$

请参阅demo

答案 1 :(得分:2)

我不知道你如何使用这个正则表达式的背景,但我会分两步完成:

第1步: 使用一行代码删除所有空格。由于间距不应定义数字是否有效。

第2步: 使用此正则表达式

^(?:4[0-9]{12}(?:[0-9]{3})?|(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|3[47][0-9]{13})$

这会在MasterCards上获得更多规则。

Source(由于需要更少类型的牌,因此表达式短缺)

Demo