正则表达式的IP地址列表

时间:2014-04-09 13:40:37

标签: javascript regex node.js validation

我希望匹配包含'*'或逗号分隔的IPv4地址列表的字符串。

以下适用于一个IP或一个星号:

  

/ ^(:( :( ?: 25 [0-5] |?2 [0-4] [0-9] | [01] [0-9] [0-9]?)。 ){3}(?: 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9])?| *)$ /

我试图通过这个来获得IP列表或明星:

  

/ ^(?:^ |,)(?:(?:( ?: 25 [0-5] | 2 [0-4] [0-9] | [01]?[0-9] [ 0-9])){3}(?: 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9])?| *)$ /

但它没有按预期工作。

你能帮我吗?

THX, 托马斯

1 个答案:

答案 0 :(得分:2)

因为您具体了解 IP 的接受号码,

/^\*$|^(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3}(?:\s*,\s*(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3})*$/
// * or   IP=   0-255                    .0-255 (3 more times)           then (, IP) 0 or mote times

如果必须仅使用一个 RegExp 检查有效性,我只会使用 RegExp ,因为它可能很多更清楚地将其分解为几个步骤,否则。

// some func
var reIP = /^(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3}$/,
    tokens = str.split(/\s*,\s*/), i;
for (i = 0; i < tokens.length; ++i)
    if (!reIP.test(tokens[i]))
        return false;
return true;