簡體   English   中英

正則表達式的IP地址列表

[英]regex for list of ip addresses

我想匹配一個包含'*'或以逗號分隔的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,托馬斯

因為您要具體說明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;

暫無
暫無

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

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