如何用正则提取不含扩展名的文件名并为无alt图片设置alt属性?
正则提取图片src无扩展名文件名并替换空alt属性
核心需求
处理带有空alt属性的图片标签,从src属性中提取不含扩展名的文件名,并将其填充到空的alt中。
修正后的正则方案
针对你提供的HTML实体转义后的标签(如<、"),可以使用以下正则表达式:
/(<img.*?src=".*?\/)([^\/.]+)(\.[^\/"]+")(.*?alt="")(.*?>)/
替换模板为:
$1$2$3$4$2"$5
如果是处理原始HTML标签(无实体转义),正则和替换模板调整为:
/(<img.*?src=".*?\/)([^\/.]+)(\.[^\/"]+")(.*?alt="")(.*?>)/
替换模板:
$1$2$3$4$2"$5
正则逻辑说明
$1:匹配img标签开头到src属性中最后一个/的部分,比如<img class="alignnone..." src="http://localhost/wp-content/uploads/2015/02/$2:捕获无扩展名的文件名,通过[^\/.]+匹配最后一个/之后、.之前的所有字符(即示例中的300x149-jquerymobile)$3:捕获文件扩展名部分,包括.和后续内容直到",比如.jpg"$4:匹配空的alt属性部分alt=""$5:匹配标签剩余的内容直到闭合>
效果演示
原标签:
<img class="alignnone size-medium wp-image-18" src="http://localhost/wp-content/uploads/2015/02/300x149-jquerymobile.jpg" alt="" width="300" height="149">
替换后:
<img class="alignnone size-medium wp-image-18" src="http://localhost/wp-content/uploads/2015/02/300x149-jquerymobile.jpg" alt="300x149-jquerymobile" width="300" height="149">
补充说明
该正则仅匹配alt属性为空的图片标签,不会覆盖已有有效alt内容;若需要处理没有alt属性的标签,可进一步调整正则匹配逻辑。
内容的提问来源于stack exchange,提问作者SsKacpersS
相关产品推荐
相关产品推荐

