正则表达模型

时间:2014-02-07 15:48:49

标签: regex

嘿伙计们对正则表达式不熟悉我找到了这样的正则表达式。

preg_match("/^(1[-\s.])?(\()?\d{3}(?(2)\))[-\s.]?\d{3}[-\s.]?\d{4}$/",$number)


preg_match("/^

        (1[-\s.])?  # optional '1-', '1.' or '1'
        ( \( )?     # optional opening parenthesis
        \d{3}       # the area code
        (?(2) \) )  # if there was opening parenthesis, close it
        [-\s.]?     # followed by '-' or '.' or space
        \d{3}       # first 3 digits
        [-\s.]?     # followed by '-' or '.' or space
        \d{4}       # last 4 digits

        $/x",$number);

我在教程网站上找到了这些解释..我只需要知道为什么(?(2))在这里被分配..为什么在开头应用了问号(可选符号)以及(2)的用途是什么在那个代码..

很抱歉,如果这个问题标准低,因为我是新手。任何帮助都会受到赞赏.ThankS。:)

1 个答案:

答案 0 :(得分:1)

(?(2)\))是一个if子句,用于检查是否捕获了第二个匹配组。

您应该能够在Regex101看到正则表达式的细分。查看正则表达式在所有点上的作用非常有用,并且很容易从那里调整正则表达式。