REGEX, где у тега img нет alt - PullRequest
       21

REGEX, где у тега img нет alt

0 голосов
/ 02 апреля 2019

Я пытаюсь написать регулярное выражение, которое ищет тег img, в котором нет атрибута alt.

Вот регулярное выражение.

<img\s+src.+^(?!alt).+$

Вот несколько примеров

<img src="smiley.gif" alt="Smiley face" height="42" width="42">
<img src="smiley2.gif" height="42" width="42">
<img src="smiley3.gif" alt="Smiley face Three" height="42" width="42">

Вот ссылка на regex101 https://regex101.com/r/Z5vkQb/3/

Ответы [ 3 ]

2 голосов
/ 02 апреля 2019

Не .

Вы не указали, какой язык используете, но есть вероятность, что у вас есть доступный анализатор DOM.

Напримерв JavaScript вы можете просто сделать это:

var imgs_with_no_alt = document.querySelectorAll("img:not([alt])");

В PHP вам понадобится что-то вроде этого:

$dom = new DOMDocument();
$dom->loadHTML("your HTML here");
$images = $dom->getElementsByTagName("img");
foreach($images as $image) {
    if( $image->getAttribute("alt")) continue;
    // do something to $image here, which doesn't have an [alt] attribute
}
1 голос
/ 02 апреля 2019

Если в пределах одной строки, вы можете использовать это,

<img(?!.*\s+alt\s*=).+$

Демо

0 голосов
/ 02 апреля 2019

Вы можете использовать это выражение:

<img[^>]*alt=[^>]*>
...