在preg_match函数中检查多个表达式

时间:2017-01-15 06:34:15

标签: php regex preg-match

我有一个脚本,用于检查输入链接是否为http://(如果为空)。代码如下:

if(!preg_match('~http://[a-zA-Z0-9]~',$link))

以上代码仅检查http:// links。

我想检查除此之外的多个表达式,例如https://,ftp:// etc。

使用&&和|,没有给出正确的输出。

请帮我写一个可以使用OR(|)运算符匹配多个表达式的正确代码。

感谢。

1 个答案:

答案 0 :(得分:2)

您在PHP中不需要多个&&||,您可以使用一个正则表达式检查所有这些协议。将fht分组到可选的非捕获组中,然后将s设为可选。

if(!preg_match('~(?:f|ht)tps?://[a-zA-Z0-9]~',$link))

演示:https://regex101.com/r/67qiGQ/1

另一种方法可能是http://php.net/manual/en/function.parse-url.php,然后检查PHP_URL_SCHEME