[英]Unable to loop through a string to find regex pattern number
我正在尝试制作一个应用程序,客户端将在文本区域中搜索一些字符串,并且该字符串将被循环以查找 IP 地址。 如果它找到 IP,那么它将获取它的值并在 API 中使用它来请求更多数据。 客户端搜索的字符串将始终具有 IP。 但我没有得到 ip。 这是代码:
HTML
<div class="row">
<div class="col-sm-12 mb-5">
<form action="/finder" method="GET" id="ipForm">
<textarea type="text" name="header" id="form-input" class="form-control form-input form-inline justify-content-center" required></textarea>
<input type="submit" class="btn btn-primary" id="form-submit" value="CHECK">
</form>
</div>
</div>
路由器
router.get("/finder", (req, res) => {
if(req.query.header) {
var query = req.query.header;
var rawQuery = query.split("\n");
for(var i = 0; i < rawQuery.length; i++) {
var ip = /Received:\s+from.*?\[((?:[0-9]{1,3}\.){3}[0-9]{1,3})\]/i.exec(rawQuery[i]);
if(ip !== null) {
var url = "https://api.ipregistry.co/" + ip;
request(url, function(error, response, body) {
if(!error && response.statusCode === 200) {
const data = JSON.parse(body);
res.render("../views/finder", {data: data});
}
});
}else{
// var data = "Unable to retrieve data.";
// res.render("../views/finder", {data: data});
console.log("no ip found");
}
}
}else{
res.render("../views/finder", {data: null});
}
});
编辑了更多信息- 输入值将是这样的
Return-path: <user@example.com>
Received: from mac.com ([10.13.11.252])
by ms031.mac.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28
2007)) with ESMTP id <0JMI007ZN7PETGC0@ms031.mac.com> for user@example.com; Thu,
09 Aug 2007 04:24:50 -0700 (PDT)
Received: from mail.dsis.net (mail.dsis.net [70.183.59.5])
by mac.com (Xserve/smtpin22/MantshX 4.0) with ESMTP id l79BOnNS000101
for <user@example.com>; Thu, 09 Aug 2007 04:24:49 -0700 (PDT)
Received: from [192.168.2.77] (70.183.59.6) by mail.dsis.net with ESMTP
(EIMS X 3.3.2) for <user@example.com>; Thu, 09 Aug 2007 04:24:49 -0700
Date: Thu, 09 Aug 2007 04:24:57 -0700
From: Frank Sender <sender@example.com>
Subject: Test
To: Joe User <user@example.com>
Message-id: <61086DBD-252B-46D2-A54C-263FE5E02B41@example.com>
MIME-version: 1.0 (Apple Message framework v752.2)
X-Mailer: Apple Mail (2.752.2)
Content-type: text/plain; charset=US-ASCII; format=flowed
Content-transfer-encoding: 7bit
这种模式(?:[0-9]{1,3}\.){3}[0-9]{1,3}
肯定会返回 IP。 如果您期望多个 Ips,您可能只想使用/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/g
而不是/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/i
进行全局搜索,而不是遍历句子。
在您的问题中,您添加了额外的正则表达式来搜索“从 IP_ADDRESS 接收”,并且这些额外的文本也必须匹配。 尝试在没有它的情况下匹配 IP。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.