首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用负查找时只匹配单个单词

使用负查找时只匹配单个单词
EN

Stack Overflow用户
提问于 2019-03-10 07:19:58
回答 2查看 88关注 0票数 0

在Javascript中,我目前正在使用正则表达式:

代码语言:javascript
运行
复制
/^(?!3838\s+REGATTA\s+COURT).*(COURT).*/

我想完全避免匹配:

3838赛马会法庭

和匹配:(地址将有所不同)

5555赛艇会

但是,我只想匹配单词"COURT“,而不匹配整个字符串(这是我当前表达式返回的)。

此外,无法通过指定诸如^(?!5555\s+REGATTA\s+COURT)这样的表达式来删除5555 REGATTA法庭,因为地址会有所不同。基本上,我需要避免把所有的东西都匹配到“法庭”,然后再进行匹配。

EN

Stack Overflow用户

发布于 2019-03-10 08:19:38

下面是一种使用regex替换all的方法:

代码语言:javascript
运行
复制
var address = "5555 REGATTA COURT ";
var output = address.replace(/^(?!3838\s+REGATTA\s+COURT\b)(.*)\bCOURT\b(.*)/, "$1CT$2");
console.log(address);
console.log(output);

这里的逻辑是首先排除地址3838 REGATTA COURT。然后,匹配并捕获单词COURT两边的所有内容。最后,用两个捕获组替换为它们之间的CT

我们还可以使用回调函数尝试这样做:

代码语言:javascript
运行
复制
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);

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55085393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档