Регулярное выражение - утверждение просмотра вперед

У меня проблема с утверждением просмотра вперед (? =). Например, у меня есть выражение:

/Win(?=2000)/

Соответствует Win , если выражение похоже на Win2000 , Win2000fgF . У меня есть следующее выражение:

^(?=.*\d)(?=.*[a-z]).*$

Оно соответствует цифре и строчной букве, например: 45dF , 4Dd ​​. Но я не знаю, почему он работает и соответствует всем символам :) У меня нет символов, которые стоят до (? =. * \ D) . Думаю, должно работать только это выражение:

^.\*(?=.*\d)(?=.*[a-z]).*$

\ * перед выражением).

Не могли бы вы объяснить это?

9
задан Chris Seymour 14 December 2013 в 18:26
поделиться