我的字符串是:
$msg = '
Here are all URLs:
------------------
google.com
www.google.com
http://google.com
http://www.google.com
ftp://ftp.google.com
';
我尝试了以下REGEX来匹配任何类型的URL,并且应该重新使用空行:
$msg = preg_replace("/^.*'b(http:'/'/)?(www'.)[^.]+'.com'b.*$/m",'',$msg);
但它返回的是:
Here are all URLs:
------------------
google.com
http://google.com
ftp://ftp.google.com
这意味着上述REGEX仅替换这些URL:www.google.com
和http://www.google.com
请帮忙!
试试这个:
$msg = preg_replace("/^.*'b(?:((http|ftp):'/'/)|(www'.))?[^.]+'.com'b.*$/m", "","{$msg}");
^(http:'/'/)?(www'.)?(ftp:'/'/)?.*'.com'b.*$
试试这个。我想你只想删除url的。使www
可选,因为有些url不包含它。还添加了ftp
,因为有些网址有它。请参阅演示。
http://regex101.com/r/jI8lV7/3
试试这个正则表达式:^.*'b(?:((http|ftp):'/'/)|(www'.))?[^.]+'.com'b.*$
演示
这里缺少ftp
:((http|ftp):'/'/)|(www'.)?
我检查是否有http
或ftp
,然后是://
,或者是否有www.
。注意表达式末尾的问号,它允许您匹配URL,例如:google.com
将正则表达式更改为
^.*'b((http|ftp):'/'/)?((www|ftp)'.)?[^.]+'.com$
查看regex如何匹配http://regex101.com/r/dI1cP2/4
你在/^.*'b(http:'/'/)?(www'.)[^.]+'.com'b.*$
中出了什么问题
www
与google.com
一样是可选的校正在组
(www|ftp)'.)?
的末尾添加了量词?
ftp
协议将不与正则表达式匹配通过将其添加到交替中来校正。
http|ftp):'/'/)?((www|ftp)'.)?
这两组都是可选的,由末尾的量词
?
组成从示例中,需要验证的字符串以
.com
结尾。则不需要使用CCD_ 23的附加匹配。使用CCD_ 25将CCD_。它可以防止www.google.comxxxxx
等不需要的字符串验证