繁体   English   中英

PHP的正则表达式 - 类似于IP模式?

[英]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})*\.?$

演示

如果您需要数字在0255之间,如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM