我想扫描 IP 地址的消息/字符串,我设法让它检查整个事情是否匹配,但我无法检查它是否包含 IP
这是我尝试过的
let ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
if(message.content.match(ipRegex)) {
client.sql.query(`SELECT autoDelIPs, modlog FROM guildconfig WHERE guildID = ?`, [message.guild.id], async function (error, results, fields) {
if(results[0].autoDelIPs === 1) {
if(results[0].modlog !== "0" || results[0].modlog !== "000000000000000000") {
let logemb = new Discord.MessageEmbed().setTitle("IP Detected").addField("User", message.author.tag, true).addField("Sent", message.content, true).addField("In", "<#" + message.channel.id + ">", true).setColor("RED").addField("Action Taken", "Message deleted", true)
message.guild.channels.cache.get(results[0].modlog).send(logemb)
message.delete()
message.channel.send("An IP was detected to be sent by " + message.author.tag + " and was deleted, a log has been sent into the modlog channel!")
} else {
message.delete()
message.channel.send("An IP was detected to be sent by " + message.author.tag + " and was deleted, no log has been made as a modlog was not set!")
}
}
})
}
Run Code Online (Sandbox Code Playgroud)
在此处使用此代码是一些输出示例:
消息:看看我的 ip 1.1.1.1 哈哈
输出:什么都没有发生
消息:8.8.8.8
输出:检测到要发送的 IP
我曾尝试为自己寻找答案,但找不到答案,我知道这可能是一个愚蠢的问题,但我找不到任何问题的答案
小智 5
在正则表达式中^,$意思是行的开始和结束。因此,如果 IP 是消息中的唯一内容,则您的表达式只会捕获 IP。
删除它们,它将按预期工作。
我建议使用您的正则表达式 o RegExr,因为它有一个解释有效负载的工具。