วิธีทดสอบนิพจน์ปกติ (regex) ออนไลน์
นิพจน์ปกติเป็นหนึ่งในเครื่องมือที่ทรงพลังที่สุดในการเขียนโปรแกรม — และเป็นหนึ่งในสิ่งที่น่าหงุดหงิดที่สุดที่จะเชี่ยวชาญ ตัวทดสอบ regex ช่วยให้คุณสร้างและดีบักรูปแบบแบบโต้ตอบ แทนที่จะรันโค้ด ตรวจสอบเอาต์พุต และเดาว่ามีอะไรผิดปกติ
ทำไมต้องใช้ตัวทดสอบ regex
การเขียน regex ในตัวแก้ไขของคุณหมายความว่าคุณเห็นข้อผิดพลาดเฉพาะตอนรันไทม์ ตัวทดสอบแสดง:
- การไฮไลต์แบบสด — ดูว่าส่วนใดของข้อความตรงกันในขณะที่คุณพิมพ์รูปแบบ
- กลุ่มจับ — ดูว่าแต่ละกลุ่มจับอะไรโดยไม่ต้องเขียนการดีบัก
- รายละเอียดการจับคู่ — ตำแหน่ง ความยาว และเนื้อหาที่แน่นอนของการจับคู่แต่ละครั้ง
- การแสดงตัวอย่างการแทนที่ — ดูผลลัพธ์ของการค้นหา-แทนที่ก่อนใช้
วิธีทดสอบ regex ออนไลน์
- ป้อนรูปแบบของคุณ — พิมพ์ regex ในช่องรูปแบบ เปิดใช้งานแฟล็ก (g สำหรับ global, i สำหรับไม่สนใจตัวพิมพ์, m สำหรับหลายบรรทัด) ตามต้องการ
- วางข้อความทดสอบของคุณ — ป้อนข้อความที่จะทดสอบ การจับคู่จะถูกไฮไลต์แบบเรียลไทม์
- ดูผลลัพธ์ — ดูการจับคู่ทั้งหมดพร้อมกลุ่มจับที่แสดงด้านล่าง ใช้ฟิลด์ « แทนที่ด้วย » เพื่อทดสอบการแทนที่
รูปแบบ regex ที่ควรรู้
ที่อยู่อีเมล (พื้นฐาน):
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
URL:
https?://[^\s]+
หมายเลขโทรศัพท์ (US):
\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
วันที่ (YYYY-MM-DD):
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])
ที่อยู่ IP (IPv4):
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
เคล็ดลับการเขียน regex ที่ดีกว่า
- เริ่มเรียบง่าย — สร้างรูปแบบพื้นฐานที่ใช้งานได้ก่อน เพิ่มความซับซ้อนทีหลัง การพยายามเขียน regex ที่สมบูรณ์แบบในครั้งแรกแทบไม่เคยได้ผล
- ใช้แฟล็ก global (g) — หากไม่มี ตัวทดสอบจะหยุดที่การจับคู่แรก ด้วย
gคุณจะเห็นการจับคู่ทั้งหมดในข้อความ - ทดสอบกรณีขอบเขต — regex ของคุณอาจจับคู่กรณีที่เห็นได้ชัดและล้มเหลวกับสตริงว่าง อักขระพิเศษ หรือเงื่อนไขขอบเขต เพิ่มสิ่งเหล่านี้ในข้อความทดสอบของคุณ
- หลีกอักขระพิเศษ —
.,*,+,?,(,),[,],{,},\,^,$และ|มีความหมายพิเศษใน regex ในการจับคู่ตามตัวอักษร ให้นำหน้าด้วยแบ็กสแลช - ใช้กลุ่มที่ไม่จับ — หากคุณต้องการวงเล็บเพื่อรวมกลุ่มโดยไม่จับ ให้ใช้
(?:...)แทน(...)สิ่งนี้ทำให้ผลลัพธ์ของคุณสะอาดขึ้น
คำถามที่พบบ่อย
regex ของฉันจะทำงานในภาษาโปรแกรมอื่นหรือไม่?
ไวยากรณ์ regex ส่วนใหญ่ใช้ร่วมกันระหว่าง JavaScript, Python, Java, PHP และอื่นๆ รูปแบบพื้นฐาน (คลาสอักขระ ตัวกำหนดปริมาณ จุดยึด) ทำงานได้ทุกที่ ฟีเจอร์ขั้นสูงบางอย่างเช่น lookbehinds หรือกลุ่มที่มีชื่อแตกต่างกันไปตามภาษา
ข้อมูลทดสอบของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การจับคู่ทั้งหมดเกิดขึ้นในเครื่องในเบราว์เซอร์ของคุณด้วยเอ็นจิ้น RegExp ดั้งเดิมของ JavaScript ไม่มีอะไรถูกส่งไปที่อื่น
ฉันสามารถทดสอบการแทนที่ได้หรือไม่?
ได้ ป้อนรูปแบบการแทนที่ (โดยใช้ $1, $2 ฯลฯ สำหรับกลุ่มจับ) เพื่อดูผลลัพธ์ของการค้นหา-แทนที่แบบเรียลไทม์
ทำงานออฟไลน์ได้หรือไม่?
ได้ เมื่อโหลดหน้าแล้ว เครื่องมือทำงานทั้งหมดในเบราว์เซอร์ของคุณโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต