0

我需要使用 jQuery 找到位于网站上的 IP。页面看起来像:

<a href='ipcheck.php?ip=127.0.0.1'>127.0.0.1</a>

如何使用正则表达式找到 127.0.0.1?文本一,而不是 href 属性一。如果你能做一个例子(它会提醒它),我会很高兴。

提前致谢

编辑:我用它来查找我的 IP 并添加一个类:

$('a').filter(function() {
    return $(this).text().match(/\d+\.\d+\.\d+\.\d+/);
}).addClass('ips');
4

5 回答 5

3

如果您想扫描节点以检测它们是否有 IP 地址,您可以使用类似...

$("body").text().match(/\d+\.\d+\.\d+\.\d+/g);

这应该返回所有看起来像 IP 地址的东西的列表。您可以删除那些不能是 IPv4 地址的...

ips = ips.filter(function(ip) { 
                 return ip.split(".").every(function(octet, index) { 
                                              return octet <= 255 && octet >= 0; 
                                            });
                 });

如果您想要最好的浏览器支持,请交换filter()every()相应地$.grep()调整。

请注意,这将0.0.0.0允许255.255.255.255. 您可能希望其中的一部分有效,因此请进行相应调整。

如果你没有 jQuery,你可以只使用普通的 JavaScript ......

var ips = (function me(node) {   
    return [].reduce.call(node.childNodes, function (ips, node) {
            return ips.concat(({
            1: me,
            3: function (node) {
                return node.data.match(/\d+\.\d+\.\d+\.\d+/g);
            }
        })[node.nodeType](node) || []);
    }, []);
})(document.body);

这基本上遍历了 的后代的每个节点body,匹配 IP 地址并将它们添加到数组中。

于 2013-06-27T10:36:10.087 回答
2

您还可以尝试以下方法,

$("body a").text().match(/^(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))$/g);
于 2013-06-27T10:42:53.740 回答
0

如果它是有效的,您还可以使用此正则表达式获取 ip:

((?:(?:0?\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(?:1\d{2}|2[0-4]\d|25[0-5]|0?\d{1,2}))

例子:

$("body").text().match(/((?:(?:0?\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(?:1\d{2}|2[0-4]\d|25[0-5]|0?\d{1,2}))/g);
于 2013-06-27T10:42:06.170 回答
0

这对我有用 http://jsfiddle.net/UJtut/

$('a').each(function (i, el) {
  if(/\b(?:\d{1,3}\.){3}\d{1,3}\b/.test(el.innerHTML)) {
    alert(el.innerHTML);
  }
});

正则表达式取自http://www.regular-expressions.info/examples.html

于 2013-06-27T10:44:18.713 回答
-2

编辑以使用 Jquery 从具有相同 url 的多个锚点中提取检查它

$('a').each(function() {
    if ($(this).attr('href').split("?")[0] === "ipcheck.php")
        alert($(this).text()); 
});
于 2013-06-27T10:34:28.920 回答