正则表达式 /(hi)?/g 的含义?

发布于 2022-09-11 16:51:01 字数 564 浏览 13 评论 0

下面正则表达式的含义?

() 是捕获组

? 出现 0 次或 1 次的内容

但为什么会匹配成两个值?

var re = /(hi)?/g;
console.log(re.exec("hi"));  // ["hi", "hi"]

加? 与不加? 的区别:

不加则为null:
r=/(a)/g
r.exec('www')   // null

有?情况:
r=/(a)?/g
r.exec('www')  // ["", undefined, index: 0, input: "www", groups: undefined]

只有?的情况:
r=/a?/g
r.exec('www')  // ["", index: 0, input: "www", groups: undefined]

匹配零次
r=/,{0}/g
r.exec('www')  // ["", index: 0, input: "www", groups: undefined]

匹配零次为什么总能成功?

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

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

发布评论

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

评论(2

櫻之舞 2022-09-18 16:51:01

图片描述

不语却知心 2022-09-18 16:51:01

第一个问题

regexObj.exec(str)返回结果中,数组[0],表示正则匹配到的字符, 数组[1~n] 表示匹配到的组(括号内匹配的内容)

改一下这个例子更好理解

clipboard.png

regexObj.exec(str)

第二个问题

? 表示匹配 0 个或 1 个,你的表达式 /(a)?/g/a?/g 匹配 0 个或者 1 个 a,www符合这个表达式,只不过匹配到的结果为空

regexp

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