我想通過使用正則表達式在C++中驗證使用隨機密碼生成器函數生成的密碼。正則表達式範圍不能用於驗證隨機生成的密碼
密碼的規則是: 密碼必須是總共8個字母。密碼可以是4個大寫字母和4個數字或6個大寫字母和2個數字。
有效實例:
- ABCD1234
- PQRSTU88
我用這表達: /^(?=.{8}$)([AZ] {4,6})([0-9] {2,4})\ w +/gm
and this website測試表達式: http://regexr.com/3frd4
它工作時的範圍內保持爲{1,4}但如果我改變至{2,4}第二示例密碼失敗。
點擊細節按鈕顯示,對於第一示例密碼:ABCD1234,
捕獲組#1捕捉ABCD &捕獲組#2僅捕獲123(未1234?)。
對於第二個例子的密碼:PQRSTU88,
捕獲組#1捕捉PQRSTU &捕獲組#2捕捉只有8(未88?)。
根據我的理解,{2,4}指定至少2個數字至多4個數字。那麼爲什麼我的正則表達式在第二個例子中不適用於該範圍。
這是因爲'\ w +'。你爲什麼使用它? –
@WiktorStribiżew我是正式表達的新手,沒有完全理解\ w的含義。刪除它後,它是正確的。如果您已將此評論發佈爲答案,我會將其標記爲已接受的答案。 – Ghos3t
是的,我發佈了一個答案。你接受了,謝謝。我也提出了這個問題。 :)乾杯。 –