javascript - 正则表达式问题 : Difference between 'seconds?' and 'second(?:s)?'

标签 javascript regex string

<分区>

我正在尝试理解和练习以下内容。我猜 (?: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/

相关文章:

regex - 通过 htaccess 将部分添加到 URL

regex - 在 awk 中更改 FS 以匹配任何不是文件路径的内容

c - 更新字符串的单个字符

Javascript 气球状对话框

javascript - Jquery off 不删除 Ember 应用程序中的事件处理程序

javascript - ng-model 和 Angular 表达式之间的区别 - {{}}

java - 将 Java 交叉编译为 JavaScript

javascript - 用于验证十进制数的 JavaScript 中的正则表达式

c++ - 为什么字符串数组会导致 LNK2001 错误?

c# - 将带有字符串的 C# 结构传递给 C++ 应用程序