วิธีการแก้ปัญหาของ @ codaddict จะทำงาน
คุณควรพิจารณาเปลี่ยนกฎบางอย่างเป็น:
- เพิ่มอักขระพิเศษอื่น ๆ เช่น%, ^, (,), -, _, + และจุด ฉันกำลังเพิ่มอักขระพิเศษทั้งหมดที่คุณพลาดไปเหนือเครื่องหมายตัวเลขในคีย์บอร์ดของสหรัฐอเมริกา หลบหนีสิ่งที่ใช้ regex
- ทำรหัสผ่าน 8 ตัวขึ้นไป ไม่ใช่แค่จำนวนคงที่ 8
ด้วยการปรับปรุงข้างต้นและเพื่อความยืดหยุ่นและความสามารถในการอ่านได้มากขึ้นฉันจะแก้ไข regex ให้เป็น
^(?=.*[a-z]){3,}(?=.*[A-Z]){2,}(?=.*[0-9]){2,}(?=.*[!@#$%^&*()--__+.]){1,}.{8,}$
คำอธิบายพื้นฐาน
(?=.*RULE){MIN_OCCURANCES,} Each rule block is shown by (){}. The rule and number of occurrences can then be easily specified and tested separately, before getting combined
คำอธิบายโดยละเอียด
^ start anchor
(?=.*[a-z]){3,} lowercase letters. {3,} indicates that you want 3 of this group
(?=.*[A-Z]){2,} uppercase letters. {2,} indicates that you want 2 of this group
(?=.*[0-9]){2,} numbers. {2,} indicates that you want 2 of this group
(?=.*[!@#$%^&*()--__+.]){1,} all the special characters in the [] fields. The ones used by regex are escaped by using the \ or the character itself. {1,} is redundant, but good practice, in case you change that to more than 1 in the future. Also keeps all the groups consistent
{8,} indicates that you want 8 or more
$ end anchor
และสุดท้ายสำหรับวัตถุประสงค์ในการทดสอบที่นี่เป็นrobulinkกับ regex ข้างต้น