正则表达式 /(hi)?/g 的含义?
下面正则表达式的含义?
() 是捕获组
? 出现 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个问题
regexObj.exec(str)
返回结果中,数组[0],表示正则匹配到的字符, 数组[1~n] 表示匹配到的组(括号内匹配的内容)改一下这个例子更好理解
第二个问题
?
表示匹配 0 个或 1 个,你的表达式/(a)?/g
和/a?/g
匹配 0 个或者 1 个 a,www
符合这个表达式,只不过匹配到的结果为空