Вам необходимо экранировать -
в классе символов вашего регулярного выражения.
Вам необходимо привязать свое регулярное выражение, чтобы оно пыталось сопоставить всю входную строку, а не ее часть.
Модифицированное регулярное выражение:
'%^http://domain\.com/([A-Za-z0-9.\-_]+)/([A-Za-z0-9.\-_]+)/$%'
Вы можете сократить свое регулярное выражение, отметив, что [A-Za-z0-9_]
совпадает с \w
, а также есть повторяющееся под Регулярное выражение.
'%^http://domain\.com(/[\w.-]+){2}/$%'