如何使用RegEx同时校验有效完整信用卡号与部分掩码信用卡号
适配后的正则表达式
如果你需要同时匹配完整的16位4开头数字卡号和12位X+4位数字的掩码卡号,使用以下规则:
^(?:4\d{15}|X{12}\d{4})$
如果需要保留你原有规则支持「输入过程中未完成的全数字卡号」的特性(即允许4开头1到16位数字),可以调整为:
^(?:4\d{0,15}|X{12}\d{4})$
如果还需要支持掩码录入过程中的校验(比如用户还没输完12个X和4位数字时不报错),可以用这个版本:
^(?:4\d{0,15}|X{0,12}\d{0,4})$
规则说明
^和$分别匹配字符串的开头和结尾,避免部分匹配导致校验失效(?:...)是非捕获分组,用来整合两个互斥的匹配分支,不会额外捕获匹配内容影响后续逻辑- 第一个分支
4\d{15}(或4\d{0,15})是原有卡号规则的兼容逻辑,匹配4开头的数字型卡号 - 第二个分支
X{12}\d{4}匹配12个大写X后跟4位数字的掩码格式,如果你需要支持小写x,可以将X替换为[xX],或者给正则开启不区分大小写的标识
内容的提问来源于stack exchange,提问作者Ryan H
相关产品推荐
相关产品推荐

