2012-12-05 68 views
0

我已经尝试过使用下面的正则表达式,但无法匹配我的要求。 任何人都可以帮我...必须匹配以下示例格式的IP地址 示例 - 111.222.222.111 - 222.112.1.2(假设)或单个IP地址。 这里是我的正则表达式:正则表达式匹配两个IP地址之间的连字符符号

(^((([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\\*)\\.){3}(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\\*)$) | ^((([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\\*)\\.){3}(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\\*))(\\-)^(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\\*)\\.){3}(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\\*)$") 

回答

1

你可能要考虑不使用正则表达式。这是split解决了更简单,更可读的问题:

var ips = '111.222.222.111-222.112.1.2'; 

ips = ips.split('-'); 
var ip1 = ips[0].split('.'); 
var ip2 = ips[1].split('.'); 

// ip1 is the array ["111", "222", "222", "111"] 
// ip2 is the array ["222", "112", "1", "2"] 

为了验证他们,你只需要确保有四个元素所产生的阵列,以及parseInt函数的每个元素,并检查其是否0之间和255像这样(为IP1):

var i, temp; 
if(ip1.length != 4){ 
    console.log("Invalid IP"); 
} 
for(i = 0; i < 4; i++){ 
    temp = parseInt(ip1[i], 10); 
    if(0 > temp || temp > 255){ 
     console.log("Invalid IP"); 
     break; 
    } 
} 

做那两个IP地址,并确保只有2个IP地址在IPS(ips.length == 2)。

相关问题