2

我需要一个正则表达式,它将返回一个图像标签,该标签没有 alt 属性,引号之间有任何内容。例如,我希望它返回一个具有 alt="" 或没有 alt 但不具有 alt="y" 的 img 标签。

图像标签中可能有换行符,并且每行可能有多个图像标签。

目前,我所拥有的是:

<img.@(~[\r\n]|[\r\n])*.@(~(alt=".#"))*.@(~[\r\n]|[\r\n])*.@/>

我正在对此进行测试:

<img alt="" />
<img src="xyz.jpg"
alt="y" />
<img xxxx ABC /> 
<img xxxxxx ABC />
<img src="xyz.jpg" alt="y" />

但是我的正则表达式会返回每个图像标签,包括我不想返回的第二个和第五个标签。

我在 Microsoft Expression Web 工作。

4

2 回答 2

2

您可能希望查看 XPath 来执行此操作。如果您正在寻找具有空 alt 属性的元素,您可以在 .NET 中使用 XmlDocument 加载文档,然后调用 SelectNodes("//img[@alt='']") 来选择节点。

于 2012-04-17T19:30:31.797 回答
2

您最好的选择是使用 jQuery 将字符串解析为 html 节点,然后使用选择器从那里过滤它们。

var str = '<img alt="" /><img src="xyz.jpg" alt="y" /><img xxxx ABC /> <img xxxxxx ABC /><img src="xyz.jpg" alt="y" />';
var elementsWithoutAlt = $( str ).filter( 'not([alt])' );
console.log(elementsWithoutAlt.length);

'not([alt])' 将查找所有没有 alt 属性的元素。'img:not([alt])' 将找到所有没有 alt 属性的 'image' 元素。

演示:(单击渲染查看它的实际效果) http://jsbin.com/imeyam/3/edit

jQuery 信息 http://api.jquery.com/has-attribute-selector/

于 2012-04-17T19:44:20.263 回答