gpt4 book ai didi

Javascript 正则表达式问题

转载 作者:行者123 更新时间:2023-11-30 09:03:28 26 4
gpt4 key购买 nike

也许我只是误解了 Javascript 的正则表达式功能,但这里是……我有一个包含要删除的表达式的数组,我是这样处理的:

var removeThese = ['inc\\.','inc','ltd\\.','ltd','\\(c\\)'];

for(var i=0; i < removeThese.length; i++) {
var find = removeThese[i];
regex = new RegExp('\\b'+find+'\\b','gi');
titletext = titletext.replace(regex,'');
}

因此,在上文中,我希望匹配 inc.,inc,ltd.,ltd(c) 的任何孤岛(完整单词)表达式。我在 console.log(regex) 上的控制台:

/\binc.\b/gi
/\binc\b/gi
/\bltd\.\b/gi
/\bltd\b/gi
/\b\(c\)\b/gi

看起来不错吧?但它完全没有出现任何 (c) 以及它何时替换了 inc。它留下了 '.',所以

This is a title (c) inc.

成为

This is a title (c) .

我在这里错过了什么?

请注意,我会使用像 '(inc\.)|(inc)|(ltd\.)...' 这样的 reg exp 但我在该数组中有一些项目需要特殊转换(例如 169 被转换为搜索前的 © 符号。

最佳答案

() 不被视为单词字符,因此空格和 ( 之间没有单词边界。这意味着您的 \b 在那里不匹配。

您可以将其更改为:

regex = new RegExp('(^|\\s+)'+find+'(?=\\s+|$)','gi');

如果单词位于字符串的开头,或者前面有一些空格,并且位于字符串的结尾,或者后面有一些空格,这将删除该单词。它还将删除字符串之前的空格,因此 word (c) word2 将变为 word_word2 而不是 word__word2 (为清楚起见,空格用下划线标记) .

关于Javascript 正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com