我想使用正则表达式表示一个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} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[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} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])$");
foreach (string s in slist)
Console.WriteLine("{0} matches? {1}", s, re.IsMatch(s));
---------------------------------------------------------------
^(?!0.0.0.0$)(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])\.(\d{1,2} ¦1\d\d ¦2[0-4]\d ¦25[0-5])$
---------------------------------------------------------------
"\d{1,2}"改成 "\d ¦[1-9]\d" 会不会好看点?
好像01.01.01.01 这种ip 不好看吧
---------------------------------------------------------------