使用javascript替换多个单词?

使用javascript替换多个单词?,javascript,Javascript,我使用以下代码将输入字段中的一个单词替换为一个空格 但是,我希望能够用空格替换多个单词 基本上,我需要创建一个单词过滤器,这样用户就不能键入某些单词 HTML代码 <input type="text" id="demo" name="demo" onkeyup="myFunction()" onkeydown="myFunction()" /> Javascript代码: <script> function myFunction() { var words

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

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

基本上,我需要创建一个单词过滤器,这样用户就不能键入某些单词

HTML代码

<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>

函数myFunction(){
var words=“badword1”;
var str=document.getElementById(“demo”).value;
var res=str.replace(字“”);
document.getElementById(“demo”).value=res;
}
我试过这样的方法:

<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>

函数myFunction(){

var words=“坏字1 | |坏字2 | |坏字3”; var str=document.getElementById(“demo”).value; var res=str.replace(字“”); document.getElementById(“demo”).value=res; 警惕(“不允许使用该词!”); }
但这不起作用

首先,它不会将任何给定的
badword
替换为
空白
,其次它会触发
aler()消息,只要我在输入字段中键入第一个字母

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

使用正则表达式:

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

实际上,您不应该信任客户端代码…

像这样的东西需要大量的坏单词。。。循环通过它们创建一个全局正则表达式,然后用来替换它。。。比较原始字符串和结果字符串(如果它们更改了put alert)

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!');
    }
}

仅供参考,这是一项无用的任务。那些打算使用坏单词的人只需省略某些字母,并用
-
*
替换它们,否则他们会拼写错误。最好只是监视并创建一个不鼓励使用此类单词的环境/社区。badword1 | | badword2 | | BadWord3将被读取为字符串而不是正则表达式。这没有任何作用。我认为你应该提供一个JSFIDLE?!因为我的代码(第一个)按原样工作!已修复,但显然您的不起作用,否则您将不在这里;-)你是国王。。。。我问题中的第一个代码按原样工作。。。我只需要编辑一下你用它做的事。脱帽致敬,先生。这有效,但仍然是警报();消息会随着第一个字母弹出。至于客户端代码,这将结合使用,因此如果用户没有启用javascript,那么他们将被定向到另一个页面。@user3716307“什么的第一个字母”?我不明白。请参阅我在inputfield演示中键入的任何内容的editfirst字母将触发警报();消息你的编辑不起作用。。不过,您以前的代码仍然有效。