Этот захват только src, только если он внутри тега, а не когда он записан где-либо еще в виде простого текста. Он также проверяет, добавили ли вы другие атрибуты до или после атрибута src.
Кроме того, он определяет, используете ли вы одинарные (') или двойные (") кавычки.
\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>
Так что для PHP вы бы сделали:
preg_match("/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/", $string, $matches);
echo "$matches[1]";
для JavaScript вы бы сделали:
var match = text.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)
alert(match[1]);
Надеюсь, это поможет.