簡體   English   中英

無法遍歷字符串以查找正則表達式模式編號

[英]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。

我嘗試使用您的數據以及您嘗試從數據中提取 ip 的方式。 這是它的屏幕截圖。 因此,您的正則表達式似乎返回了一個數組。 嘗試console.log ip變量並檢查它包含的內容。 在我的實驗中,要訪問 ip 地址,我必須這樣做ip[1]

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM