我习惯的写法:
^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$
我把它拆开来理解:
^和$ 匹配字符串开始位和结束位
25[0-5] 匹配250-255。[]内部是字符集,表示字符集内的任一位,下同。0-5即数字0-5范围。
2[0-4]\d 匹配200-249。\d匹配一位数字,下同。
[01]?\d?\d) 匹配 0-199。?表示前位可能重复0或1次,0次其实是不存在。
用|字符分开成3部分,整组用()括起来,表示这是一个整体,只要匹配任一部分即可。
\.就是.,因为.在正则里表示任一字符,所以.要写作\.。
{3}就是前面()里的内容重复3次。也就是匹配 0.0.0. 至 255.255.255.。
后面的内容跟前面相同,就是 0-255。
全部组合,这个表达式匹配 0.0.0.0 至 255.255.255.255,刚好是有效IP地址。
正则是很强大的,这几天比较au3新版和旧版的更改部分,在File.au3里发现下面这条,直接去掉路径尾部可能存在的\和/字符:
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "")
相比下面这种以前的写法,用正则既简洁又高效。
If StringRight($sPath, 1) = "\" OR StringRight($sPath, 1) = "/" Then $sPath = StringTrimRight($sPath, 1) |