当一个Regex以|开头是什么意思?


What does it mean when a Regex starts with | ?

下面是一个例子:

return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?
                  (/.*)?$|i', $url);

下面是另一个:

preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $out, PREG_PATTERN_ORDER);

不是一个OR在正则表达式?当一个正则表达式以一个|开头是什么意思?

他使用它作为正则表达式分隔符,这是一个非常糟糕的主意,因为它阻止了它被用作或操作符。

虽然在处理url或其他经常使用斜杠的地方不使用/是有意义的(因为在这种情况下,每个正常的/都必须转义为'/),但通常使用#~作为分隔符要好得多,因为这些是正则表达式本身的正常字符。