preg_match 排除一个数字
我有这个代码
preg_match("/\bHTTP(.)+ (\d{3})/", $string)
在最后一个模式中,我必须检查可以由任何数字组成的 3 位数字,但不应创建像 404
或 401
这样的数字,如何我可以做吗?
I have this code
preg_match("/\bHTTP(.)+ (\d{3})/", $string)
In the last pattern I have to check for a 3 digit number that can be composed by any digit but should not create a number like 404
or 401
, how can I do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用否定先行断言来确保匹配的字符串没有
404
或401
,如下所示:圆形链接
You can use the negative lookahead assertion to ensure that the matched string does not have a
404
or a401
as:Rubular Link
您想要排除的值越多,就会变得越复杂,但
会匹配任何不以 4 开头的三位数,
或任何以 4 开头但不以 4 开头的三位数以 40 开头,
或以 40 开头但不是 401 或 404 的任何三位数。
The more values you want to exclude, the more complicated this will get, but
will match any three digit number that doesn't start with 4,
or any three digit number that starts with 4 but doesn't start with 40,
or any three digit number that starts with 40 but isn't 401 or 404.
解释:
否定前瞻
?!
查找与指定模式不匹配的文本。正向前瞻寻找匹配但不返回的模式。
http://www.regular-expressions.info/lookaround.html
? !
与以下内容不匹配模式
404|401
要么404
要么401
,因此|
用于替代explanation:
A negative lookahead
?!
looks for text that does not match the specified pattern.A positive lookahead looks for a pattern to match but not to return.
http://www.regular-expressions.info/lookaround.html
?!
do not match the followingpattern
404|401
either404
or401
, so the|
is used for alternatives