REGEX来替换任何类型的URL


REGEX to replace any type of URL

我的字符串是:

$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.comhttp://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'.)?我检查是否有httpftp,然后是://,或者是否有www.。注意表达式末尾的问号,它允许您匹配URL,例如:google.com

将正则表达式更改为

^.*'b((http|ftp):'/'/)?((www|ftp)'.)?[^.]+'.com$

查看regex如何匹配http://regex101.com/r/dI1cP2/4

你在/^.*'b(http:'/'/)?(www'.)[^.]+'.com'b.*$ 中出了什么问题

  • wwwgoogle.com 一样是可选的

    校正在组(www|ftp)'.)? 的末尾添加了量词?

  • ftp协议将不与正则表达式匹配

    通过将其添加到交替中来校正。http|ftp):'/'/)?((www|ftp)'.)?

    这两组都是可选的,由末尾的量词?组成

  • 从示例中,需要验证的字符串以.com结尾。则不需要使用CCD_ 23的附加匹配。使用CCD_ 25将CCD_。它可以防止www.google.comxxxxx等不需要的字符串验证