Я думаю, что это сработает
/<name>[^<>]*<\/name>[^<>\r\n]*<phone>[^<>]*<\/phone>/
Что бы вы ни указали в классе [ ]
, это должно быть нечто, представляющее один символ.$
интерпретируется как литерал $
внутри класса, возможно потому, что $
как конец строки имеет ширину 0 и не может быть интерпретирован как таковой внутри класса.(Отредактировано после комментария ridgerunner)
Кстати, я снял круглые скобки, которые окружают ваше регулярное выражение, потому что любое совпадение можно назвать полным совпадением.