正则表达式模式,以匹配带有或不带有http:// www的url

我根本不擅长正则表达式

到目前为止,我一直在使用许多框架代码,但是我找不到能够与URL匹配http://www.example.com/etcetc但也可以捕获诸如www.example.com/etcetc和的代码example.com/etcetc

任何帮助都会很棒。谢谢你们!

回答:

为了匹配所有类型的URL,以下代码应该起作用:

<?php

$regex = "((https?|ftp)://)?"; // SCHEME

$regex .= "([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?"; // User and Pass

$regex .= "([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))"; // Host or IP

$regex .= "(:[0-9]{2,5})?"; // Port

$regex .= "(/([a-z0-9+$_%-]\.?)+)*/?"; // Path

$regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+/$_.-]*)?"; // GET Query

$regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor

?>

然后,检查正则表达式的正确方法如下:

<?php

if(preg_match("~^$regex$~i", 'www.example.com/etcetc', $m))

var_dump($m);

if(preg_match("~^$regex$~i", 'http://www.example.com/etcetc', $m))

var_dump($m);

?>

以上是 正则表达式模式,以匹配带有或不带有http:// www的url 的全部内容, 来源链接: utcz.com/qa/429120.html

回到顶部