[ACCEPTED]-Using regular expressions to find img tags without an alt attribute-standards

Accepted answer
Score: 46

Building on Mr.Black and Roberts126 answers:


This 10 will match an img tag anywhere in the code 9 which either has no alt tag or an alt tag 8 which is not followed by ="" or ='' (i.e. invalid 7 alt tags).

Breaking it down:

(          : open capturing group
<img       : match the opening of an img tag
(?!        : open negative look-ahead
.*?        : lazy some or none to match any character
alt=(['"]) : match an 'alt' attribute followed by ' or " (and remember which for later)
.*?        : lazy some or none to match the value of the 'alt' attribute
\2)        : back-reference to the ' or " matched earlier
[^>]*      : match anything following the alt tag up to the closing '>' of the img tag
)          : close capturing group
(>)        : match the closing '>' of the img tag

If your code 6 editor allows search and replace by Regex 5 you can use this in combination with the 4 replace string:

$1 alt=""$3

To find any alt-less img 3 tags and append them with an empty alt tag. This 2 is useful when using spacers or other layout 1 images for HTML emails and the like.

Score: 24

Here is what I just tried in my own environment 5 with a massive enterprise code base with 4 some good success (found no false positives 3 but definitely found valid cases):


What's 2 going on in this search:

  1. find the opening of the tag
  2. look for the absence of zero or more characters that are not the closing bracket while also …
  3. Checking for the absence of of a word that begins with "alt" ("\b" is there for making sure we don't get a mid-word name match on something like a class value) and is followed by "=", then …
  4. look for zero or more characters that are not the closing bracket
  5. find the closing bracket

So this will match:

<img src="foo.jpg" class="baltic" />

But 1 it won't match either of these:

<img src="foo.jpg" class="baltic" alt="" />
<img src="foo.jpg" alt="I have a value.">
Score: 10

This works in Eclipse:


I'm updating for Section 1 508 too!

Score: 7

This worked for me.


This matches any string 3 beginning with <img that doesn't contain any 2 number of characters before an alt attribute. It 1 even works for src="<?php echo $imagename; ?>" type of attributes.

Score: 3

This is perfectly possible with following 5 regEx:


Looking for something that isn't there, is 4 rather tricky, but we can trick them back, by 3 looking for a group that doesn't start with 2 'a', or an 'a' that doesn't get followed 1 by an 'l' and so on.

Score: 1

This is really tricky, because regular expressions 15 are mostly about matching something that 14 is there. With look-around trickery, you 13 can do things like 'find A that is not preceded/followed 12 by B', etc. But I think the most pragmatic 11 solution for you wouldn't be that.

My proposal 10 relies a little bit on your existing code 9 not doing too crazy things, and you might 8 have to fine-tune it, but I think it's a 7 good shot, if you really want to use a RegEx-search 6 for your problem.

So what I suggest would 5 be to find all img tags, that can (but don't 4 need to) have all valid attributes for an 3 img-element. Whether that is an approach 2 you can work with is for you to decide.



The 1 current limitations are:

  1. It expects your attribute values to be delimited by double quotes,
  2. It doesn't take into account possible inline on*Event attributes,
  3. It doesn't find img elements with 'illegal' attributes.
Score: 0

Simple and effective:


This regex works for 1 find <img> tags missing the alt attribute.

Score: 0

I wrote a simple code for this without Regex

let arr = []
.filter(function() {
document.write(arr.filter(a=>!a).length + ' img without alt tag')


More Related questions