Javascript/Jquery-如何替换一个单词,但仅当它不是另一个单词的一部分时?
我目前正在进行正则表达式比较,以便在用户编写时从文本字段中删除单词(粗鲁的单词)。此时,当用户点击空格并删除匹配的单词时,它将执行检查。但是,即使它是另一个单词的一部分,它也会删除该单词。所以,如果你键入apple,后跟空格,它将被删除,这没关系。但如果你在applepie后面键入空格,它将删除“apple”并留下馅饼,这是不好的。我试图让它在这个例子中,如果苹果是另一个词的一部分,它将不会被删除 有什么方法可以只对整个单词进行比较,或者忽略与其他字符组合的比较 我知道这让人们可以在没有空间的情况下写很多粗鲁的东西。但这正是那些给我下命令的人想要达到的效果:( 谢谢你的帮助Javascript/Jquery-如何替换一个单词,但仅当它不是另一个单词的一部分时?,javascript,jquery,Javascript,Jquery,我目前正在进行正则表达式比较,以便在用户编写时从文本字段中删除单词(粗鲁的单词)。此时,当用户点击空格并删除匹配的单词时,它将执行检查。但是,即使它是另一个单词的一部分,它也会删除该单词。所以,如果你键入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, '');
}
如果您喜欢我的回答,请接受我的回答。