Javascript正则表达式问题

Javascript正则表达式问题,javascript,regex,Javascript,Regex,也许我只是误解了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'); titlet

也许我只是误解了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,'');
}
看起来不错吧?但它完全忽略了(c)的任何情况,当它取代inc.时,它离开了“.”,所以

This is a title (c) inc.
变成

This is a title (c) .
我错过了什么

注意,我会使用一个reg-exp,比如“(inc\)(inc)|(inc)|(ltd\)…”,但是我在数组中有一些项目需要特殊转换(比如169在被搜索之前被转换成©符号。

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

您可以将其更改为以下内容:

regex = new RegExp('(^|\\s+)'+find+'(?=\\s+|$)','gi');
如果单词在字符串的开头,或者前面有空格,在字符串的结尾,或者后面有空格,那么它将删除该单词。它还将删除字符串前面的空格,因此
word(c)word2
将变成
word\u word2
,而不是
word\u word2
(为清晰起见,空格用下划线标记)。

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

您可以将其更改为以下内容:

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

如果单词在字符串的开头,或者前面有空格,在字符串的结尾,或者后面有空格,那么它将删除该单词。它还将删除字符串前面的空格,因此
word(c)word2
将变成
word\u word2
,而不是
word\u word2
(为清晰起见,用下划线标记的空格)。

您也可以用一个正则表达式来完成这一切。我发现在
/match here/
语法中声明正则表达式要容易得多,因为您不必双重转义。总之,在一行代码和一个正则表达式中有完整的内容:

titletext = titletext.replace(/(^|\s+)(inc\.|inc|ltd\.|ltd|\(c\))(?=\s+|$)/gi,'');

您可以在这里看到一个小测试应用程序:。

您也可以使用一个正则表达式来完成这一切。我发现在
/match here/
语法中声明正则表达式要容易得多,因为您不必双重转义。总之,这是一行代码和一个正则表达式中的全部内容:

titletext = titletext.replace(/(^|\s+)(inc\.|inc|ltd\.|ltd|\(c\))(?=\s+|$)/gi,'');

您可以在此处看到一个小测试应用程序:。

@waitinformatrain。它不是以前的,因为我忘了逃逸
`s。我在不久前将它更改为
\\s`,所以现在它可以工作。摇晃它,谢谢:)总有一天,我将学习这些正则表达式的实际功能,而不是将它们拼凑在一起。@waitinformatrain。这不是以前,因为我忘了逃避
`s。我在不久前将其更改为
\\s`,所以现在它可以工作了。谢谢:)总有一天,我将学习这些正则表达式的实际功能,而不是将它们拼凑在一起。