<分区>
我正在尝试理解和练习以下内容。我猜 (?:s)?
和 s?
提供相同的结果
let str = "second";
let res = str.match(/second(?:s)?/g);
console.log(res); //["second"]
let res = str.match(/seconds?/g);
console.log(res); //["second"]
它们之间有什么区别吗? 谢谢
<分区>
我正在尝试理解和练习以下内容。我猜 (?:s)?
和 s?
提供相同的结果
let str = "second";
let res = str.match(/second(?:s)?/g);
console.log(res); //["second"]
let res = str.match(/seconds?/g);
console.log(res); //["second"]
它们之间有什么区别吗? 谢谢
最佳答案
在您的示例中,没有真正的区别,因为带有 ?
的正则表达式也不使用捕获组。如果您将 s
放在捕获组中,将 s
添加到输入字符串,并从正则表达式中删除全局标志,那么您会看到不同之处:
let str = "seconds";
let res = str.match(/second(s)?/g);
console.log(res);
但是不,非捕获组 (?:)
与可选语句 ?
在此上下文中使用时没有真正的区别。
关于javascript - 正则表达式问题 : Difference between 'seconds?' and 'second(?:s)?' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56661089/