จำเป็นต้องใช้นิพจน์ทั่วไปเพื่อเพิ่มวิธีการตรวจสอบแบบกำหนดเองใน jquery

ฉันต้องการตรวจสอบฟิลด์รหัสผ่านในแบบฟอร์มเข้าสู่ระบบ ข้อกำหนดสำหรับรหัสผ่านคือ รหัสผ่านควรเป็นตัวอักษรและตัวเลขผสมกัน ฉันเขียนฟังก์ชันการตรวจสอบใหม่เพื่อให้เป็นไปตามข้อกำหนดข้างต้น และเพิ่มลงใน jQuery โดยใช้ validator.addmethod() รหัสฟังก์ชันมีดังนี้

$.validator.addMethod('alphanum', function (value) {
    return /^[a-zA-Z 0-9]+$/.test(value);
}, 'Password should be Alphanumeric.');

ปัญหาคือฟังก์ชันนี้ทำงานไม่ถูกต้อง กล่าวคือ ยอมรับรหัสผ่านที่เป็นตัวอักษร (เช่น abcdeSD) และรหัสผ่านที่เป็นตัวเลข (เช่น 4255345) และแสดงข้อความแสดงข้อผิดพลาดสำหรับอินพุตดังกล่าว

  1. มีอะไรผิดปกติในรหัสของฉันหรือเปล่า?
  2. นิพจน์ทั่วไปที่เขียนนั้นผิดหรือไม่ และถ้าใช่ นิพจน์ reg ที่ถูกต้องจะเป็นอย่างไร

person Param-Ganak    schedule 15.02.2010    source แหล่งที่มา
comment
ยอมรับคำตอบบ้าง! คุณมีอัตรา 0%   -  person Skilldrick    schedule 15.02.2010
comment
สวัสดีกระเจี๊ยบ! เป้าหมายของฉันในการตรวจสอบรหัสผ่านคือการหลีกเลี่ยงการฉีด sql เนื่องจากฉันกำลังตรวจสอบรหัสผ่าน   -  person Param-Ganak    schedule 15.02.2010
comment
หากการฉีด SQL เป็นเพียงเหตุผลเดียวในการตรวจสอบความถูกต้อง นี่ไม่ใช่วิธีที่ถูกต้อง ดูเหมือนว่าคุณกำลังพยายามสนับสนุนให้ผู้อื่นเพิ่มความรัดกุมของรหัสผ่าน (แต่คุณอนุญาตให้ใช้รหัสผ่านที่มีความยาว 1 ได้)   -  person Mark Byers    schedule 15.02.2010
comment
ขอบคุณมาร์ค! สำหรับความคิดเห็นของคุณ แต่ฉันไม่อนุญาตให้ใช้รหัสผ่านที่มีความยาว 1 ฉันได้ทำการตรวจสอบความยาวของรหัสผ่านโดยใช้ความยาวสูงสุดและความยาวขั้นต่ำ   -  person Param-Ganak    schedule 15.02.2010


คำตอบ (3)


ใช้ lookaheads เชิงลบเพื่อไม่อนุญาตสิ่งที่คุณไม่ต้องการ:

^(?![a-zA-Z]+$)(?![0-9]+$)[a-zA-Z 0-9]+$
person Mark Byers    schedule 15.02.2010
comment
ขอบคุณมาร์ค! การแสดงออกปกติที่คุณให้ไว้คือการทำงานที่สมบูรณ์แบบ ขอบคุณมาก - person Param-Ganak; 15.02.2010

รหัสผ่านต้องมีตัวอักษร เท่านั้น และ หลัก

/^[a-zA-Z0-9]+$/

จะต้องมีตัวอักษร

/[a-zA-Z]+/

จะต้องมีตัวเลข

/[0-9]+/

และสิ่งเหล่านี้

/^[a-zA-Z0-9]+$/.test(value) && /[a-zA-Z]+/.test(value) && /[0-9]+/.test(value)
person Anurag    schedule 15.02.2010

ใช้นิพจน์นี้สำหรับรหัสผ่านสำหรับจาวาสคริปต์:

/((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%_!]).{8,8})/

คุณสามารถเพิ่มอักขระพิเศษใดๆ ในนิพจน์ได้

เพิ่มอักขระด้วยตนเองสำหรับใน [@#$%_!] ภายใน

person Dhanasekaran    schedule 19.09.2017