匹配前面没有左括号的两个引号
Match two quotes not preceded by opening bracket
我需要一个匹配所有出现的两个引号 (''
) 且前面没有左括号 ((
) 的正则表达式。我对括号进行了负面前瞻,然后引用了一段话。但为什么这不起作用:
/(?!\()''/g
例如这个字符串
(''test''test
它应该匹配第二次出现但不匹配第一次出现但它匹配两者。
当我使用完全相同的解决方案但检查新行而不是括号时它工作正常:
/(?!^)''/g
用这个字符串:
''test''test
它只在第二次出现时符合预期。
已测试here
即使您需要处理连续的双撇号:
,此解决方案也能正常工作
var output = "''(''test'''''''test".replace(/(\()?''/g, function([=10=], ){
return ? [=10=] : 'x';
});
document.body.innerHTML = output;
此处,/(\()?''/g
正则表达式搜索所有包含 (
和不包含 (
的匹配项,但在替换回调方法中,我们检查第 1 组匹配项。如果 Group 1 匹配,并且不为空,我们使用整个匹配作为替换文本([=13=]
代表整个匹配值),如果不匹配([=15 之前没有 (
=]) 我们只是插入替换。
Javascript 不支持回顾,这很糟糕,但有一个解决方法。
尝试:
[^\(]('{2,2})
我需要一个匹配所有出现的两个引号 (''
) 且前面没有左括号 ((
) 的正则表达式。我对括号进行了负面前瞻,然后引用了一段话。但为什么这不起作用:
/(?!\()''/g
例如这个字符串
(''test''test
它应该匹配第二次出现但不匹配第一次出现但它匹配两者。
当我使用完全相同的解决方案但检查新行而不是括号时它工作正常:
/(?!^)''/g
用这个字符串:
''test''test
它只在第二次出现时符合预期。
已测试here
即使您需要处理连续的双撇号:
,此解决方案也能正常工作var output = "''(''test'''''''test".replace(/(\()?''/g, function([=10=], ){
return ? [=10=] : 'x';
});
document.body.innerHTML = output;
此处,/(\()?''/g
正则表达式搜索所有包含 (
和不包含 (
的匹配项,但在替换回调方法中,我们检查第 1 组匹配项。如果 Group 1 匹配,并且不为空,我们使用整个匹配作为替换文本([=13=]
代表整个匹配值),如果不匹配([=15 之前没有 (
=]) 我们只是插入替换。
Javascript 不支持回顾,这很糟糕,但有一个解决方法。
尝试:
[^\(]('{2,2})