求正则提取字符串

lwife 2010-07-07 03:46:35
示例字符串如下:

<img border="0" src='id=xxxxx'>
<img src='id=xxxxx' border="0">
<img src="id=xxxxx">
<img src=id=xxxxx>


希望用正则提取<img>标签中src的值,有一点要求:src的值中必须包含“id=”这个特征
...全文
232 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
a272174902 2010-09-03
  • 打赏
  • 举报
回复
/<img[^>]*src\s*=\s*(["'])?[^>]*(?=s\.php)[^>]*>/ig
zabcd117 2010-07-12
  • 打赏
  • 举报
回复
这样行不?

var val1 = "<img border=\"0\" src='id=xxxxx'>";
var val2 = '<img src=s.php?id=xxxxx>';
var val3 = '<img src="s.php?id=xxxxx">';
var val4 = '<img src=\'s.php?id=xxxxx\' border="0">';
var pattern = /^<img.*src=([\'|\"]?)([\w\.]*\?)?id=\w+\1.*>$/i;
alert(val1.match(pattern));
lwife 2010-07-07
  • 打赏
  • 举报
回复
我现在使用的正则是:

str.Pattern = "<img(.+?)src=[""|\']*s\.php*([^\s]+?)[""|\']*(\s|>)"


能正确匹配,但感觉不是很完善
lwife 2010-07-07
  • 打赏
  • 举报
回复
感谢大家的帮助,只是我要在ASP(vbscript)里使用正则,和JS的正则有些出入
foolbirdflyfirst 2010-07-07
  • 打赏
  • 举报
回复
自己动手改改吧。
	        var html = "<img border=\"0\" src='s.php?id=xxxxx'>"//y
+"<img src='s.php?id=xxxxx' border=\"0\">"//y
+"<img src=\"s.php?id=xxxxx\">"//y
+"<img src=s.php?id=xxxxx>"//y
+"<img src=wwwx.php?id=www a=2>"//no
+"<img src=wwws.php?id=www a=2>";//no
var p = /<img[^>]*src\s*=\s*(["'])?(?=s\.php)[^>]*>/ig
alert(html.match(p))
lwife 2010-07-07
  • 打赏
  • 举报
回复
回9楼

<img src=wwws.php?id=www a=2>这个不应该被匹配上

准确的说,应该是s.php应该紧跟在src=的后面,src的值可能会有单引号、双引号,或者直接=
foolbirdflyfirst 2010-07-07
  • 打赏
  • 举报
回复
		var html = "<img border=\"0\" src='s.php?id=xxxxx'>"//y
+"<img src='s.php?id=xxxxx' border=\"0\">"//y
+"<img src=\"s.php?id=xxxxx\">"//y
+"<img src=s.php?id=xxxxx>"//y
+"<img src=wwwx.php?id=www a=2>"//no
+"<img src=wwws.php?id=www a=2>";//y
var p = /<img[^>]*src\s*=\s*(["'])?[^>]*(?=s\.php)[^>]*>/ig
alert(html.match(p))
lwife 2010-07-07
  • 打赏
  • 举报
回复
回5楼,^"id=.*?"$应该加在什么位置

<img src=s.php?id=xxx>这种形式不知道怎么匹配

str.Pattern = "<img(.+?)src=[""|\']*([^\s]+?)[""|\']*(\s|>)"
lwife 2010-07-07
  • 打赏
  • 举报
回复
回3楼,我是用在ASP中的,我想ASP正则与JS正则应该通用,所以发在JS区了,我想用正则实现
ChinaXtHuLang 2010-07-07
  • 打赏
  • 举报
回复
牛人真多啊。。
vnetcbd 2010-07-07
  • 打赏
  • 举报
回复
^"id=.*?"$
lwife 2010-07-07
  • 打赏
  • 举报
回复
src后面的值,有的用双引号"",有的用'',也有的直接用src=s.php?id=xxx

我自己写了个正则,但是匹配得不够精准

str.Pattern = "<img(.+?)[\src]=[""|\']*([^\s]+?)[""|\']*(\s|>)"
zoujp_xyz 2010-07-07
  • 打赏
  • 举报
回复

var arrImg=document.getElementsByTagName("img"),arrResult=[];
for(var i=0;i<arrImg.length;i++){
if(arrImg[i].src.indexOf("s.php")>-1){
arrResult.push(arrImg[i].src);
}
}
lwife 2010-07-07
  • 打赏
  • 举报
回复
我知道用遍历,可是遍历过程中,我只想取src的值,所以遍历过程中还得用到正则

上面示例字符串不太正确,应该是

<img border="0" src='s.php?id=xxxxx'>
<img src='s.php?id=xxxxx' border="0">
<img src="s.php?id=xxxxx">
<img src=s.php?id=xxxxx>

希望用正则提取<img>标签中src的值,有一点要求:src的值中必须包含“s.php”这个特征
zoujp_xyz 2010-07-07
  • 打赏
  • 举报
回复
这个不用正则也可以,直接遍历所有的img标签

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧