[英]Regex for PHP - similar to IP pattern?
我需要一个正则表达式,包括:1-3位数和可选点。 它就像IP模式。 我希望我的正则表达式允许以下内容:
192
192。
192.168
192.168。
而不是以下:
192.1688
这是我到目前为止:
preg_match('/^((\d{1,3})(\.?))+$/', $string);
但它仍然允许我有超过3位数。 有关如何修复正则表达式的任何建议吗?
如果您计划匹配用点分隔的任意数量的1-3位数序列(最后是可选的),您可以使用
^\d{1,3}(?:\.\d{1,3})*\.?$
见演示
如果您需要数字在0
到255
之间,如IP地址,请使用
^(?:25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?))*\.?$
看另一个演示 。
要限制只有2组数字,请使用?
第二个非捕获组的量词:
^(?:25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?))?\.?$
^
请参阅第3个演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.