Javascript 用加号替换单词

Javascript 用加号替换单词,javascript,regex,Javascript,Regex,当我试图从输入中删除某个单词时,它会在该特定单词第一次出现在输入中时删除该单词(如果该单词是另一个单词的一部分也是如此) 但我想做的是,只删除我写的单词,如果它是完整的单词,而不是如果它是另一个单词的一部分 这是我的代码: HTML: <input value="c++ c+ c" /> $input = $('input'); $word = "c+"; $input.val( $input.val().replace($word, "") ); 其输出将为: + c+ c

当我试图从输入中删除某个单词时,它会在该特定单词第一次出现在输入中时删除该单词(如果该单词是另一个单词的一部分也是如此)

但我想做的是,只删除我写的单词,如果它是完整的单词,而不是如果它是另一个单词的一部分

这是我的代码:

HTML:

<input value="c++ c+ c" />
$input = $('input');
$word = "c+";

$input.val( $input.val().replace($word, "") );
其输出将为:

+ c+ c // Removed the "c+" part of the "c++" word
…但我希望它是:

c++ c // Removed "c+"
我曾尝试使用regex
/\bc+\b/g
,但这似乎可以删除该单词的所有出现。 但是如果我想删除一个没有
+
-符号的单词,上面的代码就可以了。 我知道当使用
+
和其他符号时,你应该避开它,但我也尝试过,但没有运气

$input.val( $input.val().replace(/\bc\+/, "") );
// Output: + c+ c // Removed the "c+" part of the "c++" word
在这里,它取代了第一个示例中的“c++”的第一部分

有人知道我如何解决这个问题吗?

试试

str.replace(/\bc\+(?=\s|$)/g, "");
注意末尾的
/g
——这意味着替换所有发生的事件


编辑:正如基恩的回答中提到的,你应该检查
c+
后面是否有空格(
\s
),或者它是否是字符串的结尾(
$

,我认为这会起作用

/\bc\+(?=\s|$)/g
如果加号后面有空格或在字符串末尾,这将捕获加号


Fiddle

这允许您从输入中构造一个
RegExp
,并替换空格之间或字符串开头或结尾的匹配项

RegExp.escape=函数{
返回s.replace(/[-\/\^$*+.()|[\]{}]/g,'\\$&');
};
VaR值= 'C+C++C+C+C++ C+C,
$word=RegExp.escape('c+'),
regex=newregexp(“(?:^\\\s+”++$word+”(?:\\s++$)”,“g”);
$('input').val(值);
$('input').val($('input').val().replace(regex,)


它仍然删除了“c++”单词的第一部分啊,是的,你说得对。我想我只想指出@keune的答案非常感谢。成功了!:D在我的转义函数中没有以“\\b”结尾,而是将其改为“(?=\\s |$)”。