我是新手与正则表达式,我想用preg_match
函数来查找一个字符串是否是IP地址。正则表达式匹配的IP地址
例如,如果$string = "45.56.78.222"
或类似的东西,preg_match($regex, $string)
应该返回true。那么,$regex
应该是什么?
我是新手与正则表达式,我想用preg_match
函数来查找一个字符串是否是IP地址。正则表达式匹配的IP地址
例如,如果$string = "45.56.78.222"
或类似的东西,preg_match($regex, $string)
应该返回true。那么,$regex
应该是什么?
不要使用正则表达式时,你不需要:)
$valid = filter_var($string, FILTER_VALIDATE_IP);
但如果你真的想要一个正则表达式...
$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);
正则表达式但是只会验证格式,任何八位字节的最大值是无符号字节的最大值,或255
。
这就是为什么IPv6是必要的 - IPv4地址只有32位长,互联网是受欢迎:)
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
应该为你做例子(其中确实包含一个字符串,不 IP地址)。当然,这只是一个IPv4地址。
@alex:那么999.999.999.999也是有效的IP那么!! ?? – 2015-12-08 17:57:44
@PratikCJoshi:最初的问题(在我的答案后多年编辑)要求一个正则表达式,它可以匹配任意四个以点号分隔的数字,每个数字最多可包含3个字符... – 2015-12-08 18:25:50
这相当简单,但没有人愿意错误的IP地址。请考虑添加有效的IP地址Regex作为答案。看到有人来到这个页面,考虑到他们会得到正确的** IP地址正则表达式,但他们没有得到这个正则表达式。谢谢 – 2015-12-08 18:29:15
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
这将检查完美范围包括如果范围为高于255从任何的4.
您是否首先尝试Google? http://www.regular-expressions.info/regexbuddy/ipaccurate.html – 2011-05-03 06:28:30
'45.56.78.888'不是IP地址。 – kapa 2011-05-03 06:39:43
@bazmegakapa是的我刚刚意识到,我随机写道:D,但你有我认为的观点;) – ibrahim 2011-05-03 06:54:51