表单输入正则匹配异常:10位数字格式验证报错排查
解决表单正则匹配不匹配的问题
嘿,我一眼就揪出问题所在啦!你需要的是10位数字,但你的正则表达式实际会匹配11位数字,这就是提交时出现pattern mismatch错误的核心原因。
问题拆解
你设定的规则是:
- 首位固定为9
- 第二位是2、3、4、5、6中的一个
- 剩下8位是0-9任意数字
总长度加起来是1+1+8=10位。
但你写的正则^[9][2-6][0-9]{9,9}$里,[0-9]{9,9}要求后面必须匹配9位数字,这样总长度就变成了1+1+9=11位,而你测试的“9666311006”是10位,自然就不匹配了。
修正后的正则表达式
把后面的位数改成8位就搞定了,修正后的正则可以写成两种形式:
// 原始风格写法 pattern="^[9][2-6][0-9]{8}$" // 更简洁的写法(\d等价于[0-9]) pattern="^9[2-6]\d{8}$"
修改后的完整代码示例
<!DOCTYPE html> <html> <body> <form name="regForm"> <input type="text" pattern="^9[2-6]\d{8}$" placeholder="请输入10位符合规则的数字" required> <button type="submit">提交</button> </form> </body> </html>
现在再测试“9666311006”这类符合规则的10位数字,就不会出现匹配错误啦。
内容的提问来源于stack exchange,提问作者ehsun
相关产品推荐
相关产品推荐

