繁体   English   中英

Javascript:负向后看的等效正则表达式?

[英]Javascript: equivalent regex for negative lookbehind?

我想编写一个正则表达式,该表达式将捕获字符串中的所有双引号“,”除外。

例如,在下面的字符串中,将仅返回第一引号:

"HELLO\"\"\"

但是以下一项将返回3个匹配项:

"HELLO\"\""\""

我使用了以下表达式,但是由于在JavaScript中没有任何负面印象,所以我被困住了:

(?<!\\)"

我看过类似的问题,但大多数都提供了编程接口。 我不想使用编程接口,因为我使用的是Ace编辑器,解决问题的最简单方法是定义此正则表达式。

我想没有通用的替代方法,因为我已经尝试过针对类似问题提出的替代方法,但是没有一个完全符合我的情况。

感谢您的回答!

您可以使用以下解决方法:

(^|[^\\])"

"仅当通过前面任何字符但\\或串(的开头^ )。

但要小心,这种匹配的是两个字符:在"与前面的字符(除非在启动的最字符串大小写)。换句话说,如果你wan't替换所有这些。 "通过'例如,你”需要:

theString.replace(/(^|[^\\])"/g, "$1'")

我假设您正在尝试运行的代码:

while ( matcher = /(?<!\\)"/g.exec(theString) ) {
    // do stuff. matcher[0] is double quotes (that don't follow a backslash)
}

在JavaScript中,使用本JS lookbehinds指南

while ( matcher = /(\\)?"/g.exec(theString) ) {
  if (!matcher[1]) {
    // do stuff.  matcher[0] is double quotes (that don't follow a backslash)
  }
}

这会寻找双引号( " ),可以选择在反斜杠( \\ )后面加上双引号( " ),但实际上在反斜杠之后却没有作用。

如果您只是想计算未转义的双引号的数量,则“ do stuff”行可以为count++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM