You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visa Electron卡号正则表达式无法匹配测试用例问题咨询

问题根因

你编写的正则存在长度计算错误:规则中指定的4位前缀已经占用了卡号的前4个字符,后续[0-9]{16}要求再匹配16位数字,总长度要求为20位。但Visa Electron卡号总长度为16位,你传入的测试卡号4844640696905509总长度也只有16位,前缀后仅剩余12位数字,不符合正则的长度要求,因此匹配失败。

修正方案

将正则后续数字的匹配量词从{16}调整为{12}即可,修正后的代码如下:

const cards = [
            {
                name: 'Visa Electron',
                length: '16',
                prefixes: '4026,4175,4405,4508,4844,4913,4917',
                regexp: /^(4026|4175|4405|4508|4844|4913|4917)[0-9]{12}$/          
            }];
            
console.log(cards[0].regexp.test('4844640696905509')) // 执行后输出true
额外优化建议

如果后续需要适配不同前缀长度、不同总长度的卡规则,可以通过代码动态计算后续数字的匹配长度:用卡号总长度减去前缀的长度,自动生成对应量词,避免手动计算出错。

内容的提问来源于stack exchange,提问作者ONYX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:39:00