为何简单字母数字正则在regex101匹配成功但JavaScript中匹配失败
问题原因
你出现匹配失败的核心问题是RegExp构造函数的使用方式错误:
- 使用
RegExp构造函数传入字符串创建正则时,不需要加正则字面量首尾的/分隔符 - 修饰符(比如你用到的不区分大小写的
i)需要单独作为第二个参数传入,不能直接拼在正则规则字符串末尾
你现有代码里new RegExp("/^[a-z0-9]+$/i")实际生成的正则规则是匹配「以/开头、以/i结尾,中间由字母数字组成」的字符串,自然和你的测试串UNCLTEST614NESZZ匹配不上。
修复方案
有两种正确写法可选:
- 直接用正则字面量(更推荐,写法更简洁):
let regex = /^[a-z0-9]+$/i; let match = regex.test(serial);
- 使用
RegExp构造函数的正确传参方式:
let regex = new RegExp("^[a-z0-9]+$", "i"); let match = regex.test(serial);
修改后即可正常匹配成功。
内容的提问来源于stack exchange,提问作者jm123456
相关产品推荐
相关产品推荐

