Javascript message.content.includes不处理此代码
我正在检查邮件中是否包含某个单词。现在,我知道它是Javascript message.content.includes不处理此代码,javascript,node.js,regex,discord.js,Javascript,Node.js,Regex,Discord.js,我正在检查邮件中是否包含某个单词。现在,我知道它是message.content.includes,但我的有点不同,它不起作用 代码如下: client.on('message',(message)=>{ //这就是它不起作用的地方。如果我移除包含的部分, //它可以通过自身检测出这个词,但是如果我说 //像“哈哈哈,见鬼”之类的东西,它看不见。 if(/^H[A-Za-z]{2}k$/.test(message.content.includes)){ message.delete(); 回复(
message.content.includes
,但我的有点不同,它不起作用
代码如下:
client.on('message',(message)=>{
//这就是它不起作用的地方。如果我移除包含的部分,
//它可以通过自身检测出这个词,但是如果我说
//像“哈哈哈,见鬼”之类的东西,它看不见。
if(/^H[A-Za-z]{2}k$/.test(message.content.includes)){
message.delete();
回复('OK');
message.member.roles.add('805088740737417256');
}
});
有人知道这个问题的解决办法吗
(如果你想知道什么是regex模式的
/^H[A-Za-z]{2}k$/
部分,它会查找任何与两个字母H和k之间的任何内容匹配的单词。)使用单词边界,而不是^
和&
。这两个搜索从字符串的开头一直到结尾。另一方面,单词边界将搜索每个单独的“单词”
如果你想找到所有这些,你需要使用贪婪标志和
const strs=[
“见鬼!我在事故中撞到了桌子”,
“见鬼”,
“汉克不是质问,但汉克很酷”
];
常量regex=/\bH\w{2}k\b/;
strs.forEach(s=>console.log(s.match(regex))代码>消息。内容
是一个字符串,包含的
方法实际上是一个内置的JavaScript方法,用于检查是否可以在另一个字符串中找到一个字符串。不能将正则表达式用作搜索字符串
如果要使用正则表达式检查字符串,可以使用或<如果存在匹配项,code>RegExp.test
将返回true
,否则返回false
。如果您使用的是String.match
,则如果存在匹配项,它将返回一个数组,否则将返回null
因为,正则表达式不起作用,因为/^H[A-Za-z]{2}k$/
检查字符串是否以H
开头,以k
结尾。您可以使用单词边界来代替。单词边界\b
匹配一侧为单词字符的位置。尝试用\b
替换^
和$
锚定,它将工作:/\bH\w{2}k\b/
查看下面的工作示例:
使用.test()
client.on('message',(message)=>{
if(message.author.bot)返回;
if(/\bH\w{2}k\b/.test(message.content)){
message.delete();
回复('OK');
message.member.roles.add('805088740737417256');
}
});
使用.match()
client.on('message',(message)=>{
if(message.author.bot)返回;
if(message.content.match(/\bH\w{2}k\b/)!==null){
message.delete();
回复('OK');
message.member.roles.add('805088740737417256');
}
});
请提供示例输入字符串以及每个字符串的预期输出。输入:“见鬼!我在事故中撞到了我的桌子”输出:(来自机器人)“好的”。(heck是其中一个可以用H作为起始字母,K)在这条消息中,我希望它仍然能够检测到单词“heck”,尽管它本身并不存在,但由于某种原因在这些代码中不起作用。