Tôi gặp vấn đề với xác nhận lookahead (? =). Ví dụ, tôi có biểu hiện:Regex - xác nhận lookahead
/Win(?=2000)/
Nó phù hợp Win
, nếu biểu thức là như Win2000
, Win2000fgF
. Tôi có biểu hiện tiếp theo:
^(?=.*\d)(?=.*[a-z]).*$
Nó phù hợp cho chữ số và chữ thường, ví dụ: 45dF
, 4Dd
. Nhưng tôi không biết, tại sao nó hoạt động và phù hợp với tất cả các nhân vật :) Tôi không có ký tự, trước đây là (?=.*\d)
. Tôi nghĩ, chỉ biểu thức này sẽ hoạt động:
^.\*(?=.*\d)(?=.*[a-z]).*$
(với \*
trước khi biểu thức).
Bạn có thể giải thích nó không?
Cảm ơn bạn đã giải thích tuyệt vời. Bạn có thể cho tôi biết, tại sao^(? =. * \ D) (? =. * [A-z]) $ (không có. * Ở cuối) không hoạt động cho 2a? Regex này phải phù hợp? – luk4443
Vâng, hãy tưởng tượng bạn rời khỏi bước 10 - công cụ regex vẫn ở vị trí 0, vì vậy nó không khớp với '$'. –
Ok, cảm ơn bạn :) – luk4443