如何用jQuery正则验证6组4位字母数字的连字符分隔格式?
解决字母数字分组匹配的正则问题
你需要的正则表达式应该匹配6组4位字母/数字,每组之间用连字符分隔的格式,正确写法如下:
/^([a-z0-9]{4}-){5}[a-z0-9]{4}$/i
你原来的正则失效原因
你的正则/^([a-z0-9]{4}-){5}/i有两个核心问题:
- 仅匹配了前5组
xxxx-的结构,没有覆盖最后一组无连字符的4位字符; - 缺少结尾锚点
$,导致只要输入开头符合前5组格式,哪怕后面多了无关字符、少了最后一组,都会被判定为匹配成功。
正确正则的拆解
^:锚定字符串开头,确保从第一个字符开始匹配;([a-z0-9]{4}-){5}:重复5次“4位字母数字+连字符”的组合,对应格式里的前5组;[a-z0-9]{4}:匹配最后一组4位字母数字(无后续连字符);$:锚定字符串结尾,确保输入内容完全符合格式,没有多余字符;/i:忽略大小写修饰符,a-z会自动匹配A-Z,无需额外写a-zA-Z。
验证示例
- 有效输入:
abcd-1234-wxyz-5678-ABCD-90EF - 无效输入:
abcd-1234-wxyz-5678-ABCD(缺少最后一组)abcd-1234-wxyz-5678-ABCD-90EF-(结尾多了连字符)abcd-1234-wxyz-5678-ABCD-90EFG(最后一组超过4位)
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

