我正在使用这个正则表达式,但不将 url 与子域匹配。
(https?://[^\s]+(?=\.(jpe?g|png|gif))).(jpe?g|png|gif)
匹配:http://domain.com/folder1/folder2/folder3/image.jpg
不匹配:http://sub.domain.com/folder1/folder2/folder3/image.jpg
我正在使用这个正则表达式,但不将 url 与子域匹配。
(https?://[^\s]+(?=\.(jpe?g|png|gif))).(jpe?g|png|gif)
匹配:http://domain.com/folder1/folder2/folder3/image.jpg
不匹配:http://sub.domain.com/folder1/folder2/folder3/image.jpg
此正则表达式匹配格式良好的 JPG、PNG 和 GIF 图像的 URL(包括具有子域、端口号和查询字符串的 URL):
((?:https?\:\/\/)(?:[a-zA-Z]{1}(?:[\w\-]+\.)+(?:[\w]{2,5}))(?:\:[\d]{1,5})?\/(?:[^\s\/]+\/)*(?:[^\s]+\.(?:jpe?g|gif|png))(?:\?\w+=\w+(?:&\w+=\w+)*)?)
PHP 示例:
<?php
$str = 'Lorem ipsum http://example.com/img.jpg dolor sit http://www.aaa.cc/this/is/not/an/image.html amet, consectetur http://my.domain.com/path/to/nothing.gif adipiscing elit http://www.imgbucket.com/some/other/image.png';
preg_match_all('@((?:https?\:\/\/)(?:[a-zA-Z]{1}(?:[\w\-]+\.)+(?:[\w]{2,5}))(?:\:[\d]{1,5})?\/(?:[^\s\/]+\/)*(?:[^\s]+\.(?:jpe?g|gif|png))(?:\?\w+=\w+(?:&\w+=\w+)*)?)@', $str, $matches);
print_r($matches[1]);
输出:
Array
(
[0] => http://example.com/img.jpg
[1] => http://my.domain.com/path/to/nothing.gif
[2] => http://www.imgbucket.com/some/other/image.png
)
https?://\w+\.\w+/\S+\.(jpe?g|png|gif)
将只匹配第一个之前的一个点/
。
\S
与 相同[^\s]
,只是更短。