正则表达式测试问题:输入超2字符时.test()未返回预期false
修正正则表达式以限制输入长度为1-2个字符
你的问题出在原正则的结构上:/^[A-Z]{1,2}[A-Z0-9]$/ 会匹配2到3个字符的字符串——它的规则是「开头1-2个大写字母,再紧跟1个大写字母/数字」,所以输入ABC(3个字符)时,前两个A和B匹配[A-Z]{1,2},第三个C匹配[A-Z0-9],自然会返回true。
要实现「输入长度最多2个字符,超出则返回false」的需求,分两种常见场景给出修正后的正则:
场景1:允许每个字符是大写字母或数字,总长度1-2个
var require = /^[A-Z0-9]{1,2}$/;
- 匹配:
A、AB、A1、9Z - 不匹配:
ABC、aB、123
场景2:第一个字符必须是大写字母,第二个字符可以是大写字母或数字(总长度1-2个)
var require = /^[A-Z]([A-Z0-9])?$/;
- 匹配:
A、AB、A1 - 不匹配:
ABC、1A、aB
验证你的示例:
- 输入
ABC:两个正则的.test()都会返回false - 输入
AB:两个正则的.test()都会返回true
内容的提问来源于stack exchange,提问作者SpecialDev
相关产品推荐
相关产品推荐

