当我尝试从输入中删除某个单词时,它会在输入中第一次删除特定单词时删除(如果该单词是另一个单词的一部分)
但我想要做的只是删除我写的单词,如果它是完整的单词,而不是它是另一个单词的一部分。
这是我的代码:
HTML:
<input value="c++ c+ c" />
JavaScript的:
$input = $('input');
$word = "c+";
$input.val( $input.val().replace($word, "") );
输出结果如下:
+ c+ c // Removed the "c+" part of the "c++" word
..但希望它是:
c++ c // Removed "c+"
我尝试使用正则表达式/\bc+\b/g
,但这似乎删除了该单词的每次出现。
但是,如果我想删除没有+
- 符号的单词,则上述代码可以正常工作。
我知道在使用+
和其他标志时,你应该逃避它,但我也试过没有运气。
$input.val( $input.val().replace(/\bc\+/, "") );
// Output: + c+ c // Removed the "c+" part of the "c++" word
这里正在取代&#34; c ++&#34;的第一部分。就像在第一个例子中一样。
有谁知道我如何解决这个问题?
答案 0 :(得分:1)
答案 1 :(得分:1)
这允许您从输入中构造RegExp
,并替换空格之间或字符串开头或结尾处的匹配。
RegExp.escape = function(s) {
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};
var value = 'c+ c++ c+ c+c c+ c',
$word = RegExp.escape('c+'),
regex = new RegExp('(?:^|\\s+)' + $word + '(?:\\s+|$)', 'g');
$('input').val(value);
$('input').val($('input').val().replace(regex, ' '));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input></input>
&#13;
答案 2 :(得分:0)
尝试
str.replace(/\bc\+(?=\s|$)/g, "");
注意最后的/g
- 这意味着要替换所有出现的事件。
编辑:正如keune的回答中所提到的那样,你应该检查c+
后跟一个空格(\s
),或者它是一个字符串的结尾($
)< / p>