我如何允许非www网址?

时间:2015-12-04 11:05:31

标签: php regex

我有这个正则表达式。如何更改它以允许非www地址?

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$link))
{
    echo '<label style="color:#fff">Sorry, your link is not in a valid address format.</label><br>';
    $error = 1;
}

我在正则表达式上非常糟糕:(

1 个答案:

答案 0 :(得分:2)

您只需指定www\.子模式可选

要使子模式可选,您可以将其放入非捕获组并在其后设置?量词。因此,请将www\.更改为(?:www\.)?

请参阅PHP demo

$link = "google.com";
if (!preg_match('/\b(?:(?:https?|ftp):\/\/|(?:www\.)?)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i',$link))
{ //                                       ^^^     ^^ - OPTIONAL GROUP
    echo '<label style="color:#fff">Sorry, your link is not in a valid address format.</label><br>';
    $error = 1;
}
else echo "Good link!"; // => Good link!