如何编写正则表达式匹配至少1个9开头后跟任意数量0的字符串
问题排查
你的正则失效的核心原因是缺少字符串结束锚点$:
- 正则中的
^仅限制字符串开头必须符合规则,没有$锚点的情况下,只要开头部分匹配规则,哪怕后续存在其他不符合要求的字符,也会判定为匹配成功。比如91的开头9符合规则,就会被你的正则判定为通过。 - 补充说明:
99*可以简化为等价的9+,都表示匹配1个及以上的连续9,写法更简洁易读。
正确正则实现
let regex = /^9+0*$/;
各部分规则说明:
^:匹配字符串的起始位置9+:匹配1个及以上的连续90*:匹配0个及以上的连续0$:匹配字符串的结束位置,确保整个字符串完全符合前面的规则
校验效果
- 合法用例全部通过:
9、99、990、99990000000均匹配成功 - 非法用例全部拦截:
- 包含
9/0以外字符的场景:991匹配失败 0出现在两个9之间的场景:909、9900009均匹配失败
- 包含
内容的提问来源于stack exchange,提问作者TKoL
相关产品推荐
相关产品推荐

