在Javascript中,我目前正在使用正则表达式:
/^(?!3838\s+REGATTA\s+COURT).*(COURT).*/
我想完全避免匹配:
3838 REGATTA法院
并匹配:(地址会有所不同)
5555 REGATTA法院
但是,我只想匹配单词“ COURT”,而不是整个字符串(这是我当前表达式返回的内容)。
另外,通过指定诸如^(?! 5555 \ s + REGATTA \ s + COURT)之类的表达式也无法删除5555 REGATTA COURT,因为地址会有所不同。我基本上需要避免将所有内容匹配到“ COURT”,然后再匹配它。
最佳答案
如果您担心在替换字符串中使用$ 1 ... $ 9,只需查看MDN文档以了解标准化方式:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter。该代码将是:
var address = "5555 REGATTA COURT ";
var output = address.replace(/^(?!3838\s+REGATTA\s+COURT\b)(.*)\bCOURT\b(.*)/, function(m, g1, g2) { return g1 + "CT" + g2; });
console.log(address);
console.log(output);
但是,您在注释中提到的MDN文章也有一个兼容性表,该表显示所有现代(但不是那么现代)的浏览器也支持字符串语法。