Javascript Regex只匹配零/偶数个反斜杠在字符串中的任何地方



我需要一个正则表达式,它与字符串中任何地方的零/偶数反斜杠匹配完整字符串。如果字符串包含奇数个反斜杠,则不应该匹配完整的字符串。

的例子:

→匹配

→不匹配

测试 测试→匹配

测试 测试→不匹配

测试 →不匹配

测试 测试 →匹配

等等…注意:在上面的例子

中,我们可以假设任何长度的字符串代替'test'。我使用这个^[^\]*(\\)*[^\]*$正则表达式,但在第二次测试后它不匹配反斜杠。例如:

test\test(不匹配此之后的任何内容)

谢谢你的帮助。

你可以使用这个正则表达式:

^(?:(?:[^\]*\){2})*[^\]*$

RegEx演示

正则表达式分解:

  • ^: Start
  • (?::启动非捕获组#1
    • (?::启动非捕获组#2
      • [^\]*:匹配0个或多个字符,
      • \: Match a
    • ){2}:结束非捕获组#2。重复2次。
  • )*:结束非捕获组#1。重复此组0次或更多次。
  • [^\]*:匹配0个或多个字符(
  • 除外)
  • $: End

当前正则表达式^[^\]*(\\)*[^\]*$可以解释为Any(\)*Any,其中Any表示除反斜杠以外的任何字符。

期望的语言应该是Any\Any\Any\...,它可以通过在Kleene闭包操作符中包含当前正则表达式获得。这是(Any(\)*Any)*

修改后的原正则表达式:

^([^\]*(\\)*[^\]*)*$

可以进一步优化为:

^((\\)*[^\]*)*$

最新更新