У меня проблема с утверждением опережающего просмотра (? =). Например, у меня есть выражение:
/Win(?=2000)/
Соответствует Win
, если выражение похоже на Win2000
, Win2000fgF
. У меня есть следующее выражение:
^(?=.*\d)(?=.*[a-z]).*$
Соответствует цифрам и строчным буквам, например: 45dF
, 4Dd
. Но я не знаю, почему он работает и соответствует всем символам :) У меня нет символов, которые стоят до (?=.*\d)
. Думаю, должно работать только это выражение:
^.\*(?=.*\d)(?=.*[a-z]).*$
(с \*
перед выражением).
Не могли бы вы это объяснить?