我的字符串是:
$msg = '
Here are all URLs:
------------------
google.com
www.google.com
http://google.com
http://www.google.com
ftp://ftp.google.com
';
我尝试使用以下REGEX来匹配任何类型的网址,并且应该重新填充空行:
$msg = preg_replace("/^.*\b(http:\/\/)?(www\.)[^.]+\.com\b.*$/m",'',$msg);
Here are all URLs:
------------------
google.com
http://google.com
ftp://ftp.google.com
这意味着上述REGEX仅替换这些网址:www.google.com
和http://www.google.com
请帮忙!
答案 0 :(得分:0)
将正则表达式更改为
^.*\b((http|ftp):\/\/)?((www|ftp)\.)?[^.]+\.com$
了解正则表达式如何匹配http://regex101.com/r/dI1cP2/4
/^.*\b(http:\/\/)?(www\.)[^.]+\.com\b.*$
www
在google.com
更正在小组?
末尾添加了量词(www|ftp)\.)?
ftp
协议将无法与正则表达式匹配
通过将其添加到更改来更正。 http|ftp):\/\/)?((www|ftp)\.)?
这两个组都是可选的,由最后的量词?
制作
从示例中,需要验证的字符串以.com
结尾。不需要使用.*
进行额外匹配。使用.com
将$
锚定到字符串的末尾。它可以防止www.google.comxxxxx
等不需要的字符串验证
答案 1 :(得分:0)
^(http:\/\/)?(www\.)?(ftp:\/\/)?.*\.com\b.*$
试试这个。我猜你只想删除url's.Made www
可选,因为有些网址不包含它。还添加了ftp
,因为有些网址有它。参见演示。
答案 2 :(得分:0)
试试这个正则表达式:^.*\b(?:((http|ftp):\/\/)|(www\.))?[^.]+\.com\b.*$
你在这里ftp
遗失:((http|ftp):\/\/)|(www\.)?
我检查http
或ftp
后跟://
或www.
是否存在google.com
。请注意表达式末尾的问号,它允许您匹配以下网址:{{1}}
答案 3 :(得分:0)
$msg = preg_replace("/^.*\b(?:((http|ftp):\/\/)|(www\.))?[^.]+\.com\b.*$/m", "","{$msg}");