首页 > 解决方案 > 在 javascript 字符串中查找 IP 地址

问题描述

我想扫描 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!")
        }
      }
    })
  }

在此处使用此代码是一些输出示例:

消息:看看我的 ip 1.1.1.1 lol

输出:什么都没有发生

消息:8.8.8.8

输出:检测到要发送的 IP

我曾尝试为自己寻找答案,但找不到任何答案,我知道这可能是一个愚蠢的问题,但我找不到任何问题的答案

标签: javascriptregex

解决方案


在正则表达式中^$表示行的开始和结束。因此,如果 IP 是消息中的唯一内容,您的表达式只会捕获 IP。

删除它们,它将按预期工作。

我建议使用您的正则表达式 o RegExr,因为它有一个解释有效负载的工具。


推荐阅读