javascript - 匹配前面没有左括号的两个引号

标签 javascript regex regex-lookarounds

我需要一个正则表达式来匹配所有出现的两个引号 (''),前面没有左括号 (()。我对括号进行了否定前瞻,然后是引用。但为什么这不起作用:

/(?!\()''/g

例如使用这个字符串

(''test''test

它应该匹配第二次出现,但不匹配第一次出现,但它与两者都匹配。

<小时/>

当我使用完全相同的解决方案但检查换行而不是括号时,它工作正常:

/(?!^)''/g

使用此字符串:

''test''test

它按预期仅匹配第二次出现。

已测试here

最佳答案

即使您需要处理连续双撇号,以下解决方案也能正常工作:

var output = "''(''test'''''''test".replace(/(\()?''/g, function($0, $1){
	return $1 ? $0 : 'x';
});
document.body.innerHTML = output;

这里,/(\()?''/g 正则表达式搜索所有包含 ( 和不包含 () 的匹配项,但在替换回调方法中,我们检查对于第 1 组匹配。如果第 1 组匹配且不为空,则我们使用整个匹配作为替换文本($0 代表整个匹配值),如果不匹配(则没有(''之前)我们只需插入替换内容。

关于javascript - 匹配前面没有左括号的两个引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838311/

相关文章:

javascript - 没有类型的cshtml脚本标签

javascript - nodejs ws.Server 的特定选项

javascript - 正则表达式从整行或仅到给定的标记创建一个组

javascript - 删除所有不在单引号或双引号之间的调试器

javascript - 无法捕获 JSP var 中的 JSTL 循环变量

带有游戏循环的 JavaScript 平滑动画

java - java中如何分割下面的字符串?

java - 优化大量 Scanner.findWithinHorizo​​n(pattern, 0) 调用

c# - 正则表达式匹配两个字符之间的多个数字组

Import.io 中的正则表达式前瞻 (IF-Else-Then)