То, что вы просите, действительно сложно, самое близкое, что я получил, это обменяться. для [^>], если вы не укажете в параметрах регулярного выражения. не будет соответствовать символам новой строки.
<img((?!alt\=\".*\")[^>])*((?!title\=\".*\")[^>])*>
Но синтаксический анализ html с регулярным выражением на самом деле не рекомендуется, и вы можете увидеть это демо . Даже с ограниченным количеством тестовых случаев поймать все будет очень сложно. Параметры могут быть в любом порядке, они могут содержать экранированные символы и теги могут быть сопоставлены друг с другом.
Полагаю, вы знаете, насколько чист ваш HTML, насколько он корректен и какие значения содержатся в свойствах. Может быть, большинство тестовых случаев, которые я выделил, к вам не относится? но ваш вопрос не указывает на это. Если я сделал неправильные предположения, пожалуйста, исправьте ваш вопрос.