JavaScript:用于替换文本内部而不是单词一部分的正则表达式

12
我需要一个正则表达式来替换文本中的单词,而不是单词的一部分。
我的代码替换了单词的一部分时也替换了 'de':
str="de degree deep de";
output=str.replace(new RegExp('de','g'),''); 

output==" gree ep "

我需要的输出是:" degree deep "

如何编写正则表达式以获取正确的输出?

5个回答

22
str.replace(/\bde\b/g, ''); 
请提供需要翻译的完整内容。
RegExp('\\bde\\b','g')   // regex object constructor (takes a string as input)
并且
/\bde\b/g                // regex literal notation, does not require \ escaping

它们是相同的东西。

\b 表示“单词边界”。单词边界的定义是一个单词字符紧跟在一个非单词字符后面,或者反过来。在 JavaScript 中,单词字符的定义为 [a-zA-Z0-9_]

字符串开头字符串结尾位置也可以是单词边界,只要它们分别被单词字符跟随或前置。

请注意,在英语以外的语言领域中,单词字符的概念并不适用。


2
str="de degree deep de";
output=str.replace(/\bde\b/g,''); 

2

您可以使用正则表达式\bde\b

您可以在此处找到一个有效的示例。

正则表达式字符\b作为单词分隔符。您可以在这里找到更多信息。


2
你应该在搜索字符之间添加\b
str="de degree deep de";
output=str.replace(/\bde\b/g,''); 

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接