[英]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.