Javascript-获取输入文本值,但忽略一些单词

时间:2018-09-22 09:06:41

标签: javascript regex input get

我有一个页面,询问用户姓名。

在文本框中输入内容后,将显示一个答复,并使用文本框中的值向用户打招呼。

如果用户只键入他的名字,一切都很好,但是如果他键入类似“我的名字是约翰”的字样,则答复将是“你好,我的名字是约翰!很高兴认识你!”,我不会不想发生。

有没有一种方法可以获取用户输入,但是要排除一些单词,例如“我”,“名称”,“是” ...

这就是我所拥有的:

function myFunction() {
    var text;
    var answer = document.getElementById("myInput").value.toLowerCase();
    answer = answer.replace(/[^a-z0-9\s]/g, "");

    switch(answer) {
        case "":
            text = "Please type something.";
        break;
        default:
        text = "Hello, " + answer + "! Nice to meet you!";
    }
    document.getElementById("reply").innerHTML = text;
}
<p>What is your name?</p>

<input id="myInput" type="text">

<button onclick="myFunction()">Go</button>

<p id="reply"></p>

3 个答案:

答案 0 :(得分:4)

使用正则表达式替换删除这些单词。

answer = answer.replace(/\b(my|name|is)\b/g, '').trim();

答案 1 :(得分:1)

如果您只是想删除一些单词并且不介意将这些单词硬编码到代码中,@ Barmar的答案就可以使用。

如果您的列表不断增长,或者它来自数据库,那么您可能会发现这种方法效果更好。

const banned_words = ["my", "name", "is"];
const str = "MY name is Bonzo";

const newStr = banned_words.reduce(function(a, v) {
    // Make it case-insensitive
    var regex = new RegExp(v, "i");

    // Replace each banned word with the empty string
    return a.replace(regex, "")
  },
  str // Start with the original string

).trim(); // Then get rid of unwanted spaces.

console.log(newStr);

答案 2 :(得分:0)

您可以这样做:

var string = "my name is Jonh";
var words = ['my', 'name', 'is'];

words.forEach(function(word) {
    string = string.replace(word,'');

});

console.log(string);