VS2010正则表达式匹配IP地址

我在VS2010里面,用下面的去匹配Ip地址
wregex reg(L"([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}");
只能匹配后三位是个位数的情况, 也就是讲123.1.1.1能匹配, 但123.10.1.1不能匹配

我把这个正则表达式放在gcc上可以正常匹配

VS2010中把reg改成wstring s = L"^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.";
s += L"(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.";
s += L"(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.";
s += L"(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$";
wregex reg(s);
后就可以匹配

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
这个好像可以?

字符串里面,要使用\代替\。

wregex reg(L"([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}");
改为
wregex reg(L"([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}");
即可。

("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])")
这个好像也行

wregex reg(L"([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}");
改为
wregex reg(L"([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}");
试一试

("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])")