javascript - 使用正则表达式验证 img url

标签 javascript php regex

我一直在尝试使用正则表达式验证图像网址,如下所示:

#\[img\](((http:\/\/|https:\/\/)?(www.)?(([a-zA-Z0-9-]){2,}\.){1,4}([a-zA-Z]){2,6}(\/([a-zA-Z-_\/\.0-9#:?=&;,]*)?)?))\[\/img\]#iUs

我希望能够替换:

[img]http://www.website/folders/url_here.png[/img]
[img]https://www.website/folders/url_here.jpg[/img]
[img]https://www.website/folders/url_here.gif[/img]

与:

<img src="http(s):www.website/folders/url_here.png(jpg, gif)" />

使用:

$new_string = preg_replace($search, $replace, $string);

谢谢!

最佳答案

类似这样的事情:

<?php

$rgx = '/\[img\](https?:\/\/.+?\.(?:png|gif|jpg))\[\/img\]/';
$arr = array(
'sdvsvsdvsdv[img]http://www.website/folders/url_here.png[/img]sdvsdvsvdsvdsdv',
'sdvsvdsvd[img]https://www.website/folders/url_here.jpg[/img]svsnvlkn',
'sdvsdvsdv[img]https://www.website/folders/url_here.gif[/img]svdsvd'
);

$all = 'sdvsvsdvsdv[img]http://www.website/folders/url_here.png[/img]sdvsdvsvdsvdsdv
sdvsvdsvd[img]https://www.website/folders/url_here.jpg[/img]svsnvlknsdvsdvsdv[img]https://www.website/folders/url_here.gif[/img]svdsvd';

echo "Individual strings:\n";
foreach ($arr as $str) {
    echo preg_replace($rgx, '<img src="$1" alt="">', $str) . "\n";
}

echo "\nAll together: \n";
echo preg_replace($rgx, '<img src="$1" alt="">', $all) . "\n";

键盘: http://codepad.org/n00B6akn

一些小调整:

或者,这个调整通过保持贪婪而不是使中间非贪婪来加速我制作的正则表达式:

$rgx = '/\[img\](https?:\/\/[^\[]*\.(?:png|gif|jpg))\[\/img\]/'

这里没有那么多斜杠:

$rgx = '~\[img\](https?://[^\[]*\.(?:png|gif|jpg))\[/img\]~'

它确保 img 标签匹配,并且它们之间的任何内容都以 http(s)://开头并以 .png/.gif/.jpg 结尾。如果您需要更好的验证,那么像 hwnd 最初所做的那样(他的答案的 v1)更合适(假设您根据需要调整他的解决方案)。

关于javascript - 使用正则表达式验证 img url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727371/

相关文章:

JavaScript 函数未加载/工作

javascript - 如何自动重新加载我正在开发的 Chrome 扩展程序?

javascript - jQuery 在悬停时切换 backgroundPosition?

php - 在 Windows 中的 xampp 上启用 redis

java - Regex Java 非法/不支持的转义序列

javascript - 使用 JavaScript 从安全的 https 弹出窗口重新加载 http 父窗口

php - 将数据插入2个表php

PHP domdocument 插入 Â 符号

c# - 用于查找 iframe 标记和检索属性的正则表达式

php - 用于匹配 CSS 十六进制颜色的正则表达式