ตัวทดสอบ 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

ในเครื่อง?

ใช่

เครื่องมือที่เกี่ยวข้อง