php - 为什么正则表达式匹配“:www.xxx.com”
问题描述
我从一个流行的网站上截取了以下代码,用于 PHP 正则表达式验证。
我是新手,正在玩正则表达式。当我在 URL 前面加上一个冒号“:”时,对于 $website 如下(“:www.xxx.com”),表达式仍然匹配。我不知道为什么这应该匹配。(例如,$website = "zwww.xxx.com" 不匹配,这是预期的)。我尝试了正则表达式 101,并认为该行为可能与正则表达式开头的 \b 有关,但即使我删除了 \b,它仍然与 ":www.xxx.com" 或 "&www. xxx.com”等)非常感谢您的解释!
<?php
$website = ":www.xxx.com";
if (preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*
[-a-z0-9+&@#\/%=~_|]/i",$website)) {
echo "Matched!";
} else {
echo "Not Matched!";
}
?>
解决方案
推荐阅读
- r - 返回来自不同组的最后两行或前两行的平均值(由变量表示)
- java - 当我从批处理文件运行 Java 时,我可以挂钩批处理文件以强制退出吗?
- google-chrome - 我们如何使用浏览器的控制台在 ExtJS 中显示视图
- javascript - 验证模式弹出 asp.net 上的记录
- css - 页面上的文本没有大小,只是折叠成自身
- mysql - 在两个表之间连接的插入语句
- php - Laravel Observers 偶尔会在保存操作后无法触发
- javascript - 如何将文本复制到剪贴板
- kdb - 检查多个表中是否存在列
- apache-curator - 当馆长leaderlatch失去连接时发生了什么?