img正则表达式

super_super 2015-08-31 10:49:24
需要从一段文本中有找出<img src="http://xxxx:port/upload/abc.jpg" alt="pic" class="xyz" />的文本替换为其它的内容(整个标签都替换)。
要点:class="xyz"这个属性一定存在,也就是查找一段字符串中的img标签中包含class=”xyz“替换为其它的内容,这里主要是替换src。
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘贺阳 2015-09-01
  • 打赏
  • 举报
回复
引用 6 楼 super_super 的回复:
首先,非常感谢大家的帮助,我统一回复下。 我的运行环境是java,目的是想查找字符串中包含有<img class="xyz" />的html标签替换为其它的标签,即将<img class="xyz" />替换为<input type="test" class="adc"/>(其实img的src内容是什么并不需要关注,我问题描述的【这里主要是替换src】并不准确,d当是脑袋短路,打错了)。java本身提供的有Pattern类,但是我觉得用String的replaceAll即能达到效果。 datarrow的正则,关注的是替换,且是js代码,尚未在浏览器中验证。 u014162423,在java中替换无效果,未在浏览器中验证。 starfd,在浏览器中用jquery是很容易,用选择器查找节点,再用replaceWith替换即可。 u014162423,只需把style那部分换成class就行了。初步测试已通过。
楼主两个都是我,怎么两个结果 哈哈
hch126163 2015-08-31
  • 打赏
  • 举报
回复
replace(/<img.*?(?:class="xyz")?.*?src="(.*?)" .*?(?:class="xyz")?.*?/?>/ig,"<img src="" class=\"xyz\" />")
datarrow 2015-08-31
  • 打赏
  • 举报
回复
你这个正则在于 有可能 class="xyz" 前面可能还有其他属性(多少不定),不好做固定判断,而JS正则又不好做向后查找,难以使用普通正则完成任务。 提供一个思路,就是 replace 正则中可以使用函数,提供了无限可能: 正则表达式不严谨,代码仅供参考: <script> var s='<img src="http://xxxx:port/upload/abc.jpg" alt="pic" name="x" class="xyz" id="Myimg"/>'; s=s.replace(/<img src="([^"]+)".*?class="xyz"/,function($0,$1){return $0.replace($1,'New url');}); alert(s); </script>
super_super 2015-08-31
  • 打赏
  • 举报
回复
首先,非常感谢大家的帮助,我统一回复下。 我的运行环境是java,目的是想查找字符串中包含有<img class="xyz" />的html标签替换为其它的标签,即将<img class="xyz" />替换为<input type="test" class="adc"/>(其实img的src内容是什么并不需要关注,我问题描述的【这里主要是替换src】并不准确,d当是脑袋短路,打错了)。java本身提供的有Pattern类,但是我觉得用String的replaceAll即能达到效果。 datarrow的正则,关注的是替换,且是js代码,尚未在浏览器中验证。 u014162423,在java中替换无效果,未在浏览器中验证。 starfd,在浏览器中用jquery是很容易,用选择器查找节点,再用replaceWith替换即可。 u014162423,只需把style那部分换成class就行了。初步测试已通过。
刘贺阳 2015-08-31
  • 打赏
  • 举报
回复
引用 4 楼 u014162423 的回复:
如果src后面跟的内容是固定的可以直接replace ,不过仅试用更改前缀的. 正则 前不久我也查找过 ,用过的.跟楼主的需求很相似 <\\s*img.*(?=style)\\s*([^>]*)\\s*/\\s*> 这个是我当时的写的,写的未必精炼,但是需求够了 ,毕竟也是临时抱佛脚处理的. 其中 .*(?=style) 这个表达式叫零度断言啥的,建议楼主自行搜索下,我说的也许不对 就不误导楼主了 意思就是 < img /> 且存在style 的 信息,均会被抽出来. 楼主将style 替换自己想要的class 即可. 第一次回答 写的不好 大家请见谅.
\\s 是因为我是做中转用的 所以怕 存在 不规范的数据 所以也处理了 空格 及大小写(没用正则,代码附参数解决的),而且是后台处理的.楼主灵活处理即可.
刘贺阳 2015-08-31
  • 打赏
  • 举报
回复
如果src后面跟的内容是固定的可以直接replace ,不过仅试用更改前缀的. 正则 前不久我也查找过 ,用过的.跟楼主的需求很相似 <\\s*img.*(?=style)\\s*([^>]*)\\s*/\\s*> 这个是我当时的写的,写的未必精炼,但是需求够了 ,毕竟也是临时抱佛脚处理的. 其中 .*(?=style) 这个表达式叫零度断言啥的,建议楼主自行搜索下,我说的也许不对 就不误导楼主了 意思就是 < img /> 且存在style 的 信息,均会被抽出来. 楼主将style 替换自己想要的class 即可. 第一次回答 写的不好 大家请见谅.
  • 打赏
  • 举报
回复
你是js,那用Jquery不是更简单? $('img.xyz')这样不就取到所有符合条件的图片了

87,963

社区成员

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

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