PHP 中的 Reg 表达式


Reg expression in PHP

我知道这是做什么的,但是有人可以向我解释PHP中这个字符串的reg ex语法吗?

if (preg_match("/(?:iPhone|Android.*Mobile)/", $user_agent) > 0) {

我知道它在用户代理字符串中找到iPhone或Android,这就是我正在寻找的:

? means what - beginning of string?
: means what - characters leading up to the search phrase?
.*Mobile means it will only match iPhone blah blah Mobile or Android blah blah Mobile?

还有一个问题 - 我们是否需要"> 0"来表示匹配,或者我可以只做一个"if"表达式?

谢谢。

(?: ... )是一个非捕获组。

.是"通配符",将匹配除换行符以外的任何字符。 * 是一个量词,代表 0 或更多次。 .* 表示任何字符 0 次或更多次。

(?:iPhone|Android.*Mobile)表示iPhone(这就是|的用途)AndroidMobile两个单词之间包含任意数量的字符。

在此正则表达式中,非捕获组实际上不是必需的,即使编写为:

if (preg_match("/iPhone|Android.*Mobile/", $user_agent) > 0) {

编辑:哦,忘了提到> 0部分也不是必需的。 preg_match已经返回 0 或 1,if将其视为布尔值。