因此,我正在研究一个正则表达式来捕获字符串中的所有链接,这意味着wordsthat以像http,https等协议开始,以www开头的单词。或以某些特定域,“.com”,“.hr”和“.net”结尾的单词。 但不知怎的,这个正则表达式我总是返回所有以协议开始的链接,但只返回那些以特定域结尾的链接。 我在做什么错:|?非常感谢!PHP中的REGEXP捕获特定的域链接
$description='test.com test2.hr http://www.test3.hr https://test4.com test3.net';
$pattern = '/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]|(?:\b((?:[\w]+\.com$)|(?:[\w]+\.hr$)|(?:[\w]+\.net$)))/i';
preg_match_all($pattern, $description, $out);
var_dump($out[0]);
只是为了澄清,这只是成功地在最后三个URL匹配'$说明',对吗? –
是的,如果你删除最后一个网址,那么它只能匹配最后的“两个”。 –
除去'$'s:https://regex101.com/r/rR6rR4/1? –