Javascript/Jquery-如何替换一个单词,但仅当它不是另一个单词的一部分时?

Javascript/Jquery-如何替换一个单词,但仅当它不是另一个单词的一部分时?,javascript,jquery,Javascript,Jquery,我目前正在进行正则表达式比较,以便在用户编写时从文本字段中删除单词(粗鲁的单词)。此时,当用户点击空格并删除匹配的单词时,它将执行检查。但是,即使它是另一个单词的一部分,它也会删除该单词。所以,如果你键入apple,后跟空格,它将被删除,这没关系。但如果你在applepie后面键入空格,它将删除“apple”并留下馅饼,这是不好的。我试图让它在这个例子中,如果苹果是另一个词的一部分,它将不会被删除 有什么方法可以只对整个单词进行比较,或者忽略与其他字符组合的比较 我知道这让人们可以在没有空间的情

我目前正在进行正则表达式比较,以便在用户编写时从文本字段中删除单词(粗鲁的单词)。此时,当用户点击空格并删除匹配的单词时,它将执行检查。但是,即使它是另一个单词的一部分,它也会删除该单词。所以,如果你键入apple,后跟空格,它将被删除,这没关系。但如果你在applepie后面键入空格,它将删除“apple”并留下馅饼,这是不好的。我试图让它在这个例子中,如果苹果是另一个词的一部分,它将不会被删除

有什么方法可以只对整个单词进行比较,或者忽略与其他字符组合的比较

我知道这让人们可以在没有空间的情况下写很多粗鲁的东西。但这正是那些给我下命令的人想要达到的效果:(

谢谢你的帮助

function rude(string) {

var regex = /apple|pear|orange|banana/ig; 
//exaple words because I'm sure you don't need to read profanity 

var updatedString = string.replace( regex, function(s) {
    var blank = "";
    return blank;
});
return updatedString;
}

$(input).keyup(function(event) {
   var text;
   if (event.keyCode == 32) {
       var text = rude($(this).val());
       $(this).val(text);
       $("someText").html(text);
   }
}

您可以使用单词边界(
\b
),它匹配0个字符,但只在单词的开头或结尾。我还使用了分组(括号),因此更容易阅读和编写此类表达式

var regex = /\b(apple|pear|orange|banana)\b/ig; 
顺便说一句,在您的示例中,您不需要使用函数。这就足够了:

function rude(string) {
  var regex = /\b(apple|pear|orange|banana)\b/ig; 
  return string.replace(regex, '');
}

如果您喜欢我的回答,请接受我的回答。