2014-02-25 19 views
0

我目前正在做一个正则表达式比较,以从用户写入文本字段中删除单词(粗言秽语)。目前它会在用户点击空格时执行检查,如果匹配则删除单词。但是,即使它是另一个词的一部分,它也会删除该词。所以如果你输入苹果后跟空格,它将被删除,没关系。但是,如果你输入applepie后跟空格,它将删除'apple'并离开pie,这并不好。我试图让它在这种情况下,如果苹果是另一个词的一部分,它不会被删除。Javascript/jquery - 如何替换一个词,但只有当不是另一个词的一部分?

有没有什么办法可以只对整个单词进行比较,或者如果与其他字符结合可以忽略比较?

我知道这可以让人们写出许多没有空间的粗鲁的东西。但是,这是由该给我的命令:(

感谢任何帮助的人想要的效果。

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); 
    } 
} 
+0

如果你喜欢我的回答,接受它,将不胜感激。 – sabof

回答

2

您可以使用单词边界(\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, ''); 
} 
相关问题