如何使用JavaScript限制输入值的首尾字母数量与格式?
问题解决:JavaScript正则限制PID格式(开头2字母+中间数字+结尾1字母)
原代码的问题分析
你的正则表达式存在两个关键错误:
- 错误使用了
{2}+:{2}已经是精确匹配2次字母,后面加+属于语法错误,+是用来表示“匹配一次或多次”的量词,和精确匹配次数的{n}冲突。 - 缺少字符串锚点:没有用
^(匹配字符串开头)和$(匹配字符串结尾),导致只要输入内容里包含符合片段就会判定为有效,比如QQ23Fabc这种不符合完整格式的内容也会通过校验。
修正后的代码
var isValid = true; var id = document.getElementById("pid").value; // 使用^和$锚定整个字符串,修正量词写法 if (!id.match(/^[A-Za-z]{2}[0-9]+[A-Za-z]$/)) { document.getElementById("pidMessage").innerHTML = "你的PID格式无效!"; isValid = false; }
正则表达式说明
^:匹配字符串的起始位置[A-Za-z]{2}:精确匹配2个大小写字母[0-9]+:匹配1个或多个数字[A-Za-z]:匹配1个大小写字母(等价于[A-Za-z]{1},可以省略{1})$:匹配字符串的结束位置
这样就能严格校验输入内容必须完全符合“2个字母+若干数字+1个字母”的格式,比如QQ23F、SG21G这类会通过,而Q23F(开头只有1个字母)、QQ23(没有结尾字母)、QQ23FG(结尾2个字母)都会被判定为无效。
内容的提问来源于stack exchange,提问作者Ryan Yan
相关产品推荐
相关产品推荐

