急需正则表达式表示IP字符串的解决方法(关键是怎样表示"并且"这个意思)

我想使用正则表达式表示一个IP段,但如果使用^([-2]?[0-5]?[0-5]?)/.([-2]?[0-5]?[0-5]?)/.([-2]?[0-5]?[0-5]?)$来进行匹配的话,0.0.0.0入选,我不希望这个IP地址入选,我想表达除正常IP外并且0.0.0.0不能入选,我该怎样写这个表达式?
---------------------------------------------------------------

go to
http://www.regexlib.com/Search.aspx

and search for "IP Address"

if you are doing it on the server side, try

^(?!0.0.0.0)(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])$

string[] slist = {"255.198.1.1","192.168.1.1","0.0.0.0"};
Regex re = new Regex(@"^(?!0.0.0.0)(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])$");
foreach (string s in slist)
Console.WriteLine("{0} matches? {1}", s, re.IsMatch(s));

---------------------------------------------------------------

^(?!0.0.0.0$)(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])\.(\d{1,2} &brvbar1\d\d &brvbar2[0-4]\d &brvbar25[0-5])$
---------------------------------------------------------------

"\d{1,2}"改成 "\d ¦[1-9]\d" 会不会好看点?
好像01.01.01.01 这种ip 不好看吧
---------------------------------------------------------------

Published At
Categories with Web编程
Tagged with
comments powered by Disqus