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