用javascript替换多个单词?

时间:2014-06-06 19:40:30

标签: javascript

我使用以下代码将一个单词替换为输入字段中的空白区域。

但是,我希望能够用空格替换多个单词。

基本上我需要创建一个单词过滤器,这样用户就无法输入某些单词。

HTML CODE

<input type="text" id="demo" name="demo" onkeyup="myFunction()" onkeydown="myFunction()" />

Javascript代码:

<script>
function myFunction() {
    var words = "badword1";
    var str = document.getElementById("demo").value; 
    var res = str.replace(words, " ");
    document.getElementById("demo").value = res;

}
</script>

我尝试过这样的事情:

<script>
function myFunction() {
    var words = "badword1 || badword2 || bad word3";
    var str = document.getElementById("demo").value; 
    var res = str.replace(words, " ");
    document.getElementById("demo").value = res;
    alert('that word is not allowed!');

}
</script>

但这不起作用。

首先,它不会将任何给定的badword(s)替换为empty space,然后只要在输入字段中输入第一个字母就会触发aler();消息!

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

使用正则表达式:

var words = new RegExp("badword1|badword|bad word3", g);

实际上你不应该信任客户端代码......

答案 1 :(得分:0)

这样的事情会带来坏词的数组......循环遍历它们会创建一个全局正则表达式,然后用它来替换它...如果它们改变了警告,则比较原始字符串和结果字符串。

var badwords = ['badword1','badword2','badword3']; //array of badwords
function myFunction() {
    var str = document.getElementById("demo").value; 
    var res = str;
    for (var i = badwords.length - 1; i >= 0; i--) {
        var badword = badwords[i];
        badWordRegex = new RegExp(badword, 'g');
        res=res.replace(badWordRegex, " ");
    };

    document.getElementById("demo").value = res;

    if (str !== res){
        alert('that word is not allowed!');
    }
}