Regex รหัสผ่านที่แข็งแกร่ง — อธิบายกฎ Lookahead
แก้ไขข้อบกพร่องของนิพจน์ทั่วไปของ JavaScript แบบสด: การจับคู่ที่ไฮไลต์ กลุ่มการจับภาพ แฟล็ก และการแสดงตัวอย่างการแทนที่
ผลลัพธ์
หน้านี้เปิดขึ้นพร้อมกับรูปแบบนโยบายรหัสผ่านที่สร้างขึ้นทั้งหมดจาก lookaheads: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9\s]).{8,}$. แต่ละรายการ (?=…) คือการตรวจสอบความกว้างเป็นศูนย์ที่จะสแกนทั้งบรรทัดโดยไม่ต้องใช้มัน โดยรายการหนึ่งต้องการตัวอักษรพิมพ์เล็ก ตัวอักษรพิมพ์ใหญ่หนึ่งรายการ ตัวเลขหนึ่งหลัก หนึ่งอักขระพิเศษ - จากนั้น .{8,} เท่านั้นที่จะบังคับใช้ความยาวขั้นต่ำ
ธงมีความสำคัญที่นี่: m สร้าง ^ และ $ ยึดแต่ละบรรทัดแทนที่จะเป็นข้อความทั้งหมด และ g ค้นหาทุกบรรทัดที่มีคุณสมบัติ นั่นจะเปลี่ยนผู้ทดสอบให้กลายเป็นรายการตรวจสอบ — ตัวอย่างประกอบด้วยรหัสผ่านที่มีให้เลือกห้ารายการ และมีเพียงบรรทัดที่ตรงตามเงื่อนไขการค้นหาทั้งสี่เท่านั้นที่สว่างขึ้น ดูภาพรวมว่าทำไมรหัสผ่าน 123 จึงล้มเหลว (ไม่มีตัวพิมพ์ใหญ่ ไม่มีอักขระพิเศษ) ในขณะที่ Tr0ub4dor&3 ผ่าน
Lookaheads เป็นวิธีมาตรฐานในการแสดงเงื่อนไข "ต้องมี X ที่ไหนสักแห่ง" ในนิพจน์เดียว และค่าที่ตั้งไว้ล่วงหน้านี้เป็นพื้นที่เล่นที่ปลอดภัยสำหรับการเรียนรู้เงื่อนไขเหล่านั้น ปรับปรุงนโยบายให้มีอักขระมากกว่า 12 ตัว เพิ่มการตรวจสอบ (?!.*(.)\1\1) ป้องกันการทำซ้ำสามครั้ง หรือวางรายการรหัสผ่านที่เป็นตัวเลือกจริง ทุกการเปลี่ยนแปลงจะประเมินใหม่ทันทีและไม่มีอะไรที่คุณพิมพ์ไปจากเบราว์เซอร์ของคุณ