У меня есть это регулярное выражение. Как изменить его, чтобы разрешить не-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;
}
Мне очень плохо в regex :(
Вам просто нужно указать, что www\.
подшаблон является необязательным.
Чтобы сделать подшаблон необязательным, вы можете поместить его в группу без захвата и установить ?
квантификатор после него. Таким образом, измените www\.
to (?:www\.)?
,
См. Демонстрацию PHP
$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!
www\.
к(?:www\.)?
,