Ich habe ein Problem mit Lookahead Assertion (? =). Zum Beispiel habe ich Ausdruck:Regex - Lookahead Assertion
/Win(?=2000)/
Es paßt Win
, wenn Ausdruck wie Win2000
ist, Win2000fgF
. Ich habe nächste Ausdruck:
^(?=.*\d)(?=.*[a-z]).*$
Es ist für Ziffern- und Kleinbuchstaben entsprechen, zum Beispiel: 45dF
, 4Dd
. Aber ich weiß nicht, warum es funktioniert und alle Zeichen übereinstimmen :) Ich habe keine Zeichen, die vor (?=.*\d)
sind. Ich denke, nur sollte dieser Ausdruck arbeiten:
^.\*(?=.*\d)(?=.*[a-z]).*$
(mit \*
vor Ausdruck).
Können Sie es erklären?
Danke für großartige Erklärung. Können Sie mir sagen, warum^(? =. * \ D) (? =. * [A-z]) $ (ohne. * Am Ende) nicht für 2a funktioniert? Dieser Regex sollte übereinstimmen? – luk4443
Nun, stellen Sie sich vor, Sie lassen Schritt 10 aus - die Regex-Engine ist immer noch auf Position 0, so dass es nicht mit dem "$" übereinstimmt. –
Ok, danke :) – luk4443