Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript message.content.includes不处理此代码_Javascript_Node.js_Regex_Discord.js - Fatal编程技术网

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”,尽管它本身并不存在,但由于某种原因在这些代码中不起作用。