Regex Visa&x2B;带有空格的万事达卡需要添加美国运通

Regex Visa&x2B;带有空格的万事达卡需要添加美国运通,regex,forms,validation,Regex,Forms,Validation,我有这个正则表达式来验证带有空格的Visa和Master卡,它工作得非常完美 ^(?:4\d{3}|5[1-5]\d{2}|6011|3[47]\d{2})([- ]?)\d{4}\1\d{4}\1\d{4}$ Visa国际组织 4111111111=真 411111111111111111=真 掌握 5500000000000004=真 5500 0000 0004=真 美国运通 3400000000000009=false 3400 0000 0000 009=错误 我需要将美国运通添加到

我有这个正则表达式来验证带有空格的Visa和Master卡,它工作得非常完美

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

4111111111=真

411111111111111111=真

掌握

5500000000000004=真

5500 0000 0004=真

美国运通

3400000000000009=false

3400 0000 0000 009=错误

我需要将美国运通添加到正则表达式中,我需要最后两个true,有人能帮我吗? 谢谢大家!

(假设
4111111=false
是打字错误)

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


请参见

我不知道您如何使用此正则表达式的背景,但我将分两步执行此操作:

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

第二步: 使用这个正则表达式

^(?: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})$
在万事达卡上还有一些规则

(由于需要的卡片类型较少,因此使用了短端表达式)


您的第一个签证号码是否有拼写错误?我试过了,而且也配上了。请参阅:但是不能在第一组中添加
3\d{3}|
。正如ysanmiguel已经为美国运通卡添加了正确的大小写,即
3[47]\d{2}
.ahh。。我的错。。第4111111111是真的,对不起,我错了!
^(?: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})$