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

Javascript-获取输入文本值,但忽略某些单词,javascript,regex,input,get,Javascript,Regex,Input,Get,我有一个页面,其中询问用户的姓名 在文本框中输入后,将显示一个回复,使用文本框中的值来问候用户 如果用户只是键入他的名字,一切都很好,但是如果他键入类似“我的名字是约翰”的内容,回答将是“你好,我的名字是约翰!很高兴认识你!”,我不希望发生这种情况 是否有一种方法可以获取用户输入,但要排除一些单词,如“我的”、“姓名”、“是” 这就是我所拥有的: 函数myFunction(){ var文本; var answer=document.getElementById(“myInput”).value

我有一个页面,其中询问用户的姓名

在文本框中输入后,将显示一个回复,使用文本框中的值来问候用户

如果用户只是键入他的名字,一切都很好,但是如果他键入类似“我的名字是约翰”的内容,回答将是“你好,我的名字是约翰!很高兴认识你!”,我不希望发生这种情况

是否有一种方法可以获取用户输入,但要排除一些单词,如“我的”、“姓名”、“是”

这就是我所拥有的:

函数myFunction(){
var文本;
var answer=document.getElementById(“myInput”).value.toLowerCase();
答案=答案。替换(/[^a-z0-9\s]/g,”);
开关(应答){
案例“”:
text=“请键入内容。”;
打破
违约:
text=“你好,”+回答+“!很高兴认识你!”;
}
document.getElementById(“reply”).innerHTML=text;
}
你叫什么名字


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

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

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

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

@如果您只是想删除一些单词,并且不介意将它们硬编码到代码中,那么Barmar的答案是有效的

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

const-banked_-words=[“我的”、“名字”、“是”];
const str=“我的名字叫邦佐”;
const newStr=禁用字.reduce(函数(a,v){
//使其不区分大小写
var regex=新的RegExp(v,“i”);
//用空字符串替换每个被禁止的单词
返回a.replace(regex,“”)
},
str//从原始字符串开始
).trim();//然后去掉不需要的空间。

console.log(newStr)
@Barmar的答案适用于你只是想删除一些单词,并且你不介意将它们硬编码到你的代码中

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

const-banked_-words=[“我的”、“名字”、“是”];
const str=“我的名字叫邦佐”;
const newStr=禁用字.reduce(函数(a,v){
//使其不区分大小写
var regex=新的RegExp(v,“i”);
//用空字符串替换每个被禁止的单词
返回a.replace(regex,“”)
},
str//从原始字符串开始
).trim();//然后去掉不需要的空间。
console.log(newStr)您可以这样做:

var string=“我的名字是john”;
var words=['my','name','is'];
words.forEach(函数(word){
字符串=字符串。替换(单词“”);
});
console.log(字符串)您可以这样做:

var string=“我的名字是john”;
var words=['my','name','is'];
words.forEach(函数(word){
字符串=字符串。替换(单词“”);
});

console.log(字符串)有效。非常感谢你!顺便说一句,由于我必须将值设置为小写以避免出现类似“replace(/\b(my | name | is | my | name | is | my | name | is)\b/g.”的情况,有没有办法仍然将未排除的单词(名称)的首字母大写?请参阅,或者可以将输入保留为混合大小写,并使用regexp中的
i
标志进行不区分大小写的匹配。
replace(/\b(我的名字是)\b/gi')
再次感谢您!最后一个问题,如果不是要求太多。。。当单个特殊字符(如çñé…)单独使用时,有没有办法排除它们,但当它们是单词的一部分时,就没有办法了。替换(/\b(我的名字是| ||||||||||||||||||||||||。非常感谢你!顺便说一句,由于我必须将值设置为小写以避免出现类似“replace(/\b(my | name | is | my | name | is | my | name | is)\b/g.”的情况,有没有办法仍然将未排除的单词(名称)的首字母大写?请参阅,或者可以将输入保留为混合大小写,并使用regexp中的
i
标志进行不区分大小写的匹配。
replace(/\b(我的名字是)\b/gi')
再次感谢您!最后一个问题,如果不是要求太多。。。当单个特殊字符(如çñé…)单独使用时,有没有办法排除它们,但当它们是单词的一部分时,就没有办法了。替换(/\b(我的名字是| ||||||||||||||||||||||||||||||||||。因为我想做的事情并不复杂,所以我将使用@Barmar的答案。谢谢你的回答。因为我想做的事情并不复杂,所以我将使用@Barmar的答案。