php - 检查 preg_match 函数中的多个表达式

标签 php regex preg-match

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

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

以上代码仅检查 http://链接。

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

使用 && 和 | 无法提供正确的输出。

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

谢谢。

最佳答案

您不需要在 PHP 中使用多个 &&||,您可以使用一个正则表达式检查所有这些协议(protocol)。将 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

关于php - 检查 preg_match 函数中的多个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41658504/

相关文章:

php - 如何在 PHP 中验证 API?

php - 全拉伸(stretch)水平菜单

带有问号文字的 Python 正则表达式

java - 正则表达式只允许某些特殊字符,还包括字母数字字符

php - 如何使用 file_get_contents() 加载远程文件?

C# regex.split 方法在括号前添加空字符串

php - Preg_match 从文本中排除单词

PHP preg_match 正则表达式用于匹配模式中的前一组?

php - 在每个单词后最多插入一个前导和尾随换行符

php - MySQL - 计算php中的总行数