2

引用符の間に何もない alt 属性を持たないイメージ タグを返す正規表現が必要です。たとえば、alt="" を含むか、alt を含まないが、alt="y" を含む img タグを返さないでください。

イメージ タグには改行が含まれている場合があり、1 行に複数のイメージ タグが存在する場合があります。

現在、私が持っているものは次のとおりです。

<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" />

しかし、私の正規表現は、返したくない2番目と5番目のものを含む各画像タグを返します。

Microsoft Expression Web で作業しています。

4

2 に答える 2

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 に答える
2

これを行う代わりに、XPath を参照することをお勧めします。空の alt 属性を持つ要素を探している場合は、.NET で XmlDocument を使用してドキュメントを読み込み、SelectNodes("//img[@alt='']") を呼び出してノードを選択できます。

于 2012-04-17T19:30:31.797 に答える