ตัวทดสอบ regex
นิพจน์ปกติจับคู่รูปแบบข้อความสำหรับการตรวจสอบ ค้นหา-แทนที่ และการพาร์สล็อก ทดสอบรูปแบบพร้อมไฮไลต์สดก่อนใส่โค้ดโปรดักชัน — หลีกเลี่ยงเซอร์ไพรส์ catastrophic backtracking บนอินพุตผู้ใช้
วิธีทดสอบ regex
1. ป้อนรูปแบบ regex (โดยไม่มีสแลชรอบนอกหรือพร้อมแฟล็ก)
2. ตั้งแฟล็ก: g ทั้งก้อน, i ไม่แยกตัวพิมพ์, m หลายบรรทัด
3. วางข้อความตัวอย่างในพื้นที่สตริงทดสอบ
4. ตรวจการจับคู่ กลุ่มจับ และพรีวิวแทนที่หากมี
ตัวอย่าง regex
การตรวจสอบอีเมลอย่างหยาบ
^[\w.-]+@[\w.-]+\.\w+$ จับอีเมลง่าย ๆ — ไม่สมบูรณ์ตาม RFC แต่มีประโยชน์สำหรับฟอร์ม
ดึงวันที่ ISO
\d{4}-\d{2}-\d{2} พบ 2024-03-15 ในบรรทัดล็อกสำหรับการแทนที่ grep
ตัวช่วยสร้าง slug
แทน [^a-z0-9]+ ด้วยยัติภังค์สำหรับ URL slug จากสตริงชื่อเรื่อง
เมื่อ regex ช่วย
• เมื่อตรวจสอบสตริงมีโครงสร้าง (โทรศัพท์ รหัสไปรษณีย์)
• เมื่อพาร์สล็อกกึ่งมีโครงสร้าง
• เมื่อเรียนรู้กลุ่มจับและ lookahead
ความตระหนัก ReDoS
quantifier ซ้อนอย่าง (a+)+ บนสตริงไม่ดีทำให้ CPU ค้าง — หลีกเลี่ยง regex ผู้ใช้บนเซิร์ฟเวอร์หรือใช้เอนจินปลอดภัยที่มีหมดเวลา
คำถามที่พบบ่อย
regex สำเนียงใด?
JavaScript RegExp — มีความต่างจาก PCRE (การรองรับ lookbehind ต่างตามเวอร์ชันเอนจิน)
แฟล็ก global g?
หาการจับคู่ทั้งหมดไม่ใช่แค่ครั้งแรก — ทดสอบ stateful ด้วย lastIndex ใน JS
หลีกอักขระพิเศษ?
. * + ? [ ] ( ) { } | \ ^ $ ต้องหลีกเพื่อจับคู่ตามตัวอักษร
กลุ่มจับ?
วงเล็บ ( ) สร้างกลุ่มลำดับที่เข้าถึงได้ในแทนที่ $1 $2
ในเครื่อง?
ใช่