Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匹配图像链接但排除正常url的正则表达式?_Javascript_Regex - Fatal编程技术网

Javascript 匹配图像链接但排除正常url的正则表达式?

Javascript 匹配图像链接但排除正常url的正则表达式?,javascript,regex,Javascript,Regex,我需要从输入字符串中排除所有链接,但允许图像链接 =>允许 =>不允许 因此,假设输入字符串如下 <p>http://example.com/abc.jpg</p><img src='http://example.com/abc.jpg'/>http://example.com/222.jpg http://example.com/xyz.aspx <a url='http://example.com/abc'/> 更新: 我使用jquery将

我需要从输入字符串中排除所有链接,但允许图像链接

=>允许

=>不允许

因此,假设输入字符串如下

<p>http://example.com/abc.jpg</p><img src='http://example.com/abc.jpg'/>http://example.com/222.jpg  http://example.com/xyz.aspx <a url='http://example.com/abc'/>
更新:

我使用jquery将html解析为html标记,并对每个html节点内容进行测试

var str=“http://example.com/abc.jpg

http://example.com/xyz.aspx?id=2 http://example.com/xyz.aspx?jpg=2
http://example.com/xyz.aspx?jpg=2http://example.com/xyz.aspx?jpg=20 ", html=$.parseHTML(str),$log=$(“#log”); var regex=/^http[^\!@$\^&(\)\+=]+(\.png\.jpeg\.gif\.jpg)$/; $.each(html,function(i,el){ var src=''; 开关(el.nodeName) { 案例“IMG”: src=el.src;中断; 大小写“#text”:src=el.textContent;break; 默认值:src=el.innerHTML; } log(el.nodeName+'-'+src+'-'+regex.test(src)); });
您可以尝试以下正则表达式:

^http.+(png|jpeg|gif|jpg)$
这要求字符串以
http
开头,以指定的格式之一结尾

var regex=/^http[^\!@$\^&(\)\+\=]+(\.png\.jpeg\.gif\.jpg)$/;
var测试=[
"https://www.example.com/X00132BhJk.jpg", 
"http://www.example.com/search?ident=X00132BhJk" , 
“http://example.com”,
“http://sample.png”,
"http://test.com/png"
]
对于(变量i=0;i}
使用以下正则表达式模式(用于多个URL):

两个注意事项:

  • 这不会检查整个字符串以确保它是一个有效的URL,在线上还有很多其他关于验证URL的资源
  • 不可能确保链接实际指向图像,这只能通过向该URL发送请求并查看返回的资源类型来实现
  • 考虑到这两个警告,你已经非常接近了。您所需要的只是在字符串的开头放一个
    ^
    ,在末尾放一个
    $
    ,以确保
    jpg
    png
    是字符串中的最后一个字符。我还在jpg中添加了可选的
    e
    ,您可以添加所有其他图像文件扩展名,如
    gif
    bmp
    ,等等:

    ^https?:\/\/.+\.(?:png|jpe?g)$
    

    无法判断URL是否引用URL本身的图像内容-您只能通过mimetype和URL返回的内容来确定这一点。你需要一个更好的问题陈述。谢谢,我想我会有一个方法来增强这一点,因为有时候,人们试图欺骗系统,只是键入空白的http://example.com,而不是真正的锚链接。在这种情况下,你可以尝试
    [^@^&*\(\)\+]+
    而不是
    +
    谢谢你的帮助,我已经更新了代码。很好的结果。问题是,并不是所有的图像都以扩展结尾。有些人可能已经得到了参数后。
    \bhttps?:\/\/\S*?\/[^\/.]+\.(jpg|png)\b
    
    ^https?:\/\/.+\.(?:png|jpe?g)$