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