Это действительно сложно, потому что регулярные выражения в основном соответствуют тому, что есть.С помощью хитрости осмотра вы можете делать такие вещи, как «найти A, которому не предшествует / не следует B» и т. Д. Но я думаю, что самым прагматичным решением для вас не было бы это.немного в вашем существующем коде, не делающем слишком сумасшедших вещей, и вам, возможно, придется его настроить, но я думаю, что это хороший вариант, если вы действительно хотите использовать поиск RegEx для вашей проблемы.
Поэтому я предлагаю найти все теги img, которые могут (но не обязательно) иметь все допустимые атрибуты для img-элемента.С этим подходом вы можете работать - решать вам.
Предложение:
/<img\s*((src|align|border|height|hspace|ismap|longdesc|usemap|vspace|width|class|dir|lang|style|title|id)="[^"]"\s*)*\s*\/?>/
В настоящее время действуют следующие ограничения:
- Ожидается ваш атрибутзначения, которые должны быть разделены двойными кавычками,
- Не учитывает возможный встроенный атрибут * Event,
- Не находит элементы img с недопустимыми атрибутами.