求一个网址判断的正则表达式 通过点进行分割。或取由右向左去字符串str不等于1 就可以了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用正则表达式分解和转换IP地址: 下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip) { re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式 if(re.test(ip)) { return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1 } else { throw new Error("Not a valid IP address!") } } 不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: var ip="10.100.20.168" ip=ip.split(".") alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1)) function isIPAdress(str){ return /^([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/.test(str);} /^([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/ <script>function ch(str){var re=/^(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)$/;if(!re.test(str))return false;var chc=[];chc[0]=str.replace(re,'$1');chc[1]=str.replace(re,'$2');chc[2]=str.replace(re,'$3');chc[3]=str.replace(re,'$4');for(var i=2;i>=0;i--) if(chc[i]=="*") for(var j=3;j>i;j--) if(chc[j]!='*')return false;return true;}alert(ch("192.168.*.1"));</script> /(?:22[0-3]|2[01][0-9]|1\d{2}|[1-9]\d|[1-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1\d{2}|[1-9]\d|[0-9])){3}/ (?:22[0-3]|2[01][0-9]|1\d{2}|[1-9]\d|[1-9])匹配1-22322[0-3]匹配220-2232[01][0-9]匹配200-2191\d{2}匹配100-199[1-9]\d匹配10-99[1-9]匹配1-9用或则匹配1-223(?:\.(?:25[0-5]|2[0-4][0-9]|1\d{2}|[1-9]\d|[0-9])){3}匹配三组.0-.255原则同上25[0-5]匹配250-2552[0-4][0-9]匹配200-2491\d{2}匹配100-199[1-9]\d匹配10-99[0-9]匹配0-9用或匹配0-255\.匹配.(?:y)表示匹配y但是不保存(没有?一般用于保存) 再次压缩如下/(?:[1-9]\d?|1\d{2}|22[0-3]|2[01]\d)(?:\.(?:\d\d?|1\d{2}|2[0-4]\d|25[0-5])){3}/(?:[1-9]\d?|1\d{2}|22[0-3]|2[01]\d)匹配1-223[1-9]\d?匹配1-991\d{2}匹配100-19922[0-3]匹配220-2232[01]\d匹配200-219(?:\d\d?|1\d{2}|2[0-4]\d|25[0-5])匹配0-255\d\d?匹配0-991\d{2}匹配100-1992[0-4]\d匹配200-24925[0-5]匹配250-255 如何用DIV+CSS模拟JS的alert() 动态添加表格行 重置input name属性的问题 Firefox里面不滚动,怎么回事? 遮罩效果页面被<Object>挡住怎么办? 急~~~~~~~~~~~~~~~求带checkbox的js树~~~~~~~ 在JS中的回车事件是什么啊?或者按回车的时候触发事件怎么实现啊? ????正则表达式,怎样匹配多行???????? 高手拿分来呀!! 如何获得td中的任一类型的子元素? 如何给WORD增加一个toolsbar,再加上多个BUTTON??如何实现? 关于比较运算的问题 关于用javascript取消ctrl,alt快捷键的问题
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
} 不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
{
return /^([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/.test(str);
}
function ch(str)
{
var re=/^(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)$/;
if(!re.test(str))return false;
var chc=[];
chc[0]=str.replace(re,'$1');
chc[1]=str.replace(re,'$2');
chc[2]=str.replace(re,'$3');
chc[3]=str.replace(re,'$4');
for(var i=2;i>=0;i--)
if(chc[i]=="*")
for(var j=3;j>i;j--)
if(chc[j]!='*')return false;
return true;
}
alert(ch("192.168.*.1"));
</script>
22[0-3]匹配220-223
2[01][0-9]匹配200-219
1\d{2}匹配100-199
[1-9]\d匹配10-99
[1-9]匹配1-9
用或则匹配1-223
(?:\.(?:25[0-5]|2[0-4][0-9]|1\d{2}|[1-9]\d|[0-9])){3}匹配三组.0-.255
原则同上
25[0-5]匹配250-255
2[0-4][0-9]匹配200-249
1\d{2}匹配100-199
[1-9]\d匹配10-99
[0-9]匹配0-9
用或匹配0-255
\.匹配.
(?:y)表示匹配y但是不保存(没有?一般用于保存)
/(?:[1-9]\d?|1\d{2}|22[0-3]|2[01]\d)(?:\.(?:\d\d?|1\d{2}|2[0-4]\d|25[0-5])){3}/
(?:[1-9]\d?|1\d{2}|22[0-3]|2[01]\d)匹配1-223
[1-9]\d?匹配1-99
1\d{2}匹配100-199
22[0-3]匹配220-223
2[01]\d匹配200-219
(?:\d\d?|1\d{2}|2[0-4]\d|25[0-5])匹配0-255
\d\d?匹配0-99
1\d{2}匹配100-199
2[0-4]\d匹配200-249
25[0-5]匹配250-255