匹配引号之外的实例
与之前的假设相反,可以匹配给定正则表达式不在引号内的所有实例使用正则表达式的字符串部分,甚至考虑转义引号。
正则表达式解决方案
要实现此目的,请利用前瞻断言来检查每个单词是否是在引号之外,当其后有偶数个引号时会发生这种情况。下面的正则表达式捕获了此模式:
\+(?=([^"]*"[^"]*")*[^"]*$)
处理转义引号
要处理转义引号,请修改表达式以忽略反斜杠并前进到下一个未转义引号:
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
这确保转义引号不会被计为左引号。
JavaScript 与 .split() 和 .replace() 的用法
为了与 JavaScript 的 .split() 和 .replace() 方法一起使用,可以使用以下代码:
const input = '+bar+baz"not+or\"+or+\"this+\"foo+bar+';
const replaced = input.replace(/\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)/g, '#');
console.log(replaced); // "#bar#baz\"not+or\"+or+\"this+\"foo#bar#"
以上是如何匹配带引号的字符串之外的正则表达式实例,即使带有转义引号?的详细内容。更多信息请关注PHP中文网其他相关文章!