首页 > 解决方案 > 为什么正则表达式匹配“: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!";
    }
    ?>

标签: phpregex

解决方案


推荐阅读