preg_match() is returning inaccurate result

PHP8.3.4

Can someone help? preg_match() is acting weird about \$ and \^.

var_dump(preg_match("/\$third-party$/",'xyz$third-party')?true:false);//
returns FALSE, really expecting TRUE here!
var_dump(preg_match("/$third-party$/",'xyz$third-party')?true:false);//
returns TRUE, WHY???

"/^.....\^...\$....$/"

^ and $ must escape if it is not in beginning/ending position.
Isn't this correct?

At least Javascript is answering correctly.

/\$third-party$/.test('xyz$third-party'); // TRUE
/$third-party$/.test('xyz$third-party'); // FALSE