javascript - 这 ?匹配器与模式|空的

标签 javascript regex

我一直在练习正则表达式并遇到了这个问题。

匹配:

  • 战斧
  • 劈斧

我使用以下方法找到了解决方案:

(battle|splitting|pick)(\s|)axe

建议的解决方案是:

(battle|splitting|pick)\s?axe

在我原来的解决方案中,“OR”运算符是如何工作的?当我在没有两个表达式的 JavaScript 中运行标准 OR 运算符时,它会抛出错误。

是:

(pattern|)

相当于:

pattern?

(pattern|) 在我的第一个解决方案中如何工作?

最佳答案

In my original solution, how is the "OR" operator working? When I run the standard OR operator in javascript without two expressions, it throws an error.

正则表达式运算符不是像 || 这样的 JS 运算符。空字符串是有效的正则表达式,可以用作 Alternation operator 的操作数。 .

Is (<i>pattern</i>|) equivalent to <i>pattern</i>?

不完全是,还有一个额外的 capturing group在第一个中。但它们在匹配语言方面的工作原理是相同的,是的。

关于javascript - 这 ?匹配器与模式|空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966043/

相关文章:

javascript - 将 # 长度的字符串均分

ruby-on-rails - 如何使用 nginx 在 EC2 上运行两个应用程序

javascript - 如果在特定单词之前存在字符加空格,则不匹配

javascript - JS事件查看Mobile Safari是否已关闭?

python - 无效表达式/缺少组名称

java - 根据方括号中的值对字符串进行排序

javascript - 从 var 值中查找特定模式

javascript - 如何制作已经折叠的表格?

javascript - 如何创建仅匹配 1 或 2 的正则表达式

javascript - 使用 Angular '[attr.aria-hidden]' 隐藏的标签仍然可以使用 Tab 和 Enter 访问和单击