typescript Javascript Regex,仅匹配字符串中任意位置的零/偶数个反斜杠

vxf3dgd4  于 2023-01-21  发布在  TypeScript
关注(0)|答案(2)|浏览(98)

我需要一个正则表达式,匹配字符串中任何地方的零/偶数个反斜杠的完整字符串。如果字符串包含奇数个反斜杠,它不应该匹配完整字符串。
示例:
\-〉匹配
\-〉不匹配
测试\测试-〉匹配
测试\\测试-〉不匹配
测试\测试-〉不匹配
测试\测试\-〉匹配
等等......注:在上面的例子中,我们可以假设任何长度的任何字符串代替'test
我正在使用这个^[^\\]*(\\\\)*[^\\]*$正则表达式,但是它在第二次测试后与反斜杠不匹配。
test\test(不匹配其后的任何内容)
先谢谢你的帮助。

cunj1qz1

cunj1qz11#

当前正则表达式^[^\\]*(\\\\)*[^\\]*$可以解释为Any(\\)*Any,其中Any表示除反斜杠外的任意字符。
预期语言应为Any\\Any\\Any\\...,可以通过Kleene闭包运算符中包含当前正则表达式得到,即(Any(\\)*Any)*
修改后的原正则表达式:
^([^\\]*(\\\\)*[^\\]*)*$
它可以进一步优化为:
^((\\\\)*[^\\]*)*$

8ehkhllq

8ehkhllq2#

您可以使用此正则表达式:

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

RegEx Demo

RegEx细分:

  • ^:开始
  • (?::启动非捕获组#1
  • (?::启动非捕获组#2
  • [^\\]*:匹配除\之外的任何字符的0个或多个
  • \\:匹配一个\
  • ){2}:结束非捕获组#2。重复该组2次。
  • )*:结束非捕获组#1。重复该组0次或更多次。
  • [^\\]*:匹配除\之外的任何字符的0个或多个
  • $:结束

相关问题