关于正则表达式括号()、或|、开始结束^$的组合使用问题

发布于 2022-09-06 01:44:43 字数 252 浏览 18 评论 0

我想匹配一串数字,可以为0,但不允许0开头。
这是我的写法:^0|[1-9][0-9]*$,但这会匹配01。
这是网上找的写法:^(0|[1-9][0-9]*)$,请问为什么加了括号以后就匹配正确了。
我从网上找到的小括号的用处是:

限定量词作用的范围
限定多选结构的范围
为反向引用捕获文本
分组捕获
只分组不捕获
前瞻

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自控 2022-09-13 01:44:43

这是因为|在正则中的优先级最低,然后你的表达式其实是相当于(^0|[1-9][0-9]*$),这样是匹配0开头或是非0开头数字结尾的字符串,而不是你想要的匹配0或是非0开始的数字。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文