เครื่องมือนี้ทำอะไร
ตัวทดสอบ regex ให้คุณเขียน regular expression แล้วเห็นทันทีขณะพิมพ์ว่าตรงกับอะไรในข้อความตัวอย่างบ้าง รายการที่ตรงจะถูกไฮไลต์ในตำแหน่งจริง ทุก capture group แสดงพร้อมค่าและตำแหน่ง และเทมเพลตการแทนที่ (ไม่บังคับ) จะแสดงว่า String.replace จะให้ผลอย่างไร
วิธีใช้งาน
- วางข้อความที่ต้องการค้นหาลงใน ข้อความทดสอบ หรือคลิก ตัวอย่าง
- พิมพ์แพทเทิร์นลงใน Regular expression ในแผงตัวเลือก ไม่ต้องใส่เครื่องหมายทับครอบ
- เปิดแฟล็กที่ต้องการ: g สำหรับทุกรายการที่ตรง, i เพื่อไม่สนตัวพิมพ์เล็กใหญ่, m ให้
^และ$ทำงานต่อบรรทัด, s ให้.ตรงกับการขึ้นบรรทัดใหม่ด้วย และ u สำหรับ Unicode เต็มรูปแบบ - อ่านผลลัพธ์: จำนวนที่ตรง ข้อความที่ไฮไลต์ และตารางของแต่ละรายการพร้อมกลุ่ม คลิก คัดลอก เพื่อคัดลอกค่าใดก็ได้
- หากต้องการลองแทนที่ ให้กรอก แทนที่ด้วย เช่น
$2, $1
ตัวอย่าง
แพทเทิร์นเริ่มต้น ([\w.+-]+)@([\w-]+(?:\.[\w-]+)+) ค้นหาที่อยู่อีเมลและจับชื่อผู้ใช้กับโดเมนแยกกัน เมื่อใช้ข้อความแทนที่ $1 at $2 ข้อความ hello@example.com จะกลายเป็น hello at example.com
สรุปไวยากรณ์ฉบับย่อ
\dตัวเลข,\wอักขระของคำ,\sช่องว่าง,.อักขระใดก็ได้*ศูนย์ครั้งขึ้นไป,+หนึ่งครั้งขึ้นไป,?มีหรือไม่มีก็ได้,{2,5}ระหว่าง 2 ถึง 5 ครั้ง[abc]ตัวใดตัวหนึ่ง,[^abc]ไม่ใช่ตัวใดเลย,a|bอย่างใดอย่างหนึ่ง(...)capture group,(?<name>...)กลุ่มที่ตั้งชื่อ,(?:...)กลุ่มที่ไม่จับค่า(?=...)lookahead,(?<=...)lookbehind,\bขอบเขตของคำ
คำถามที่พบบ่อย
› เครื่องมือนี้ใช้ regex แบบไหน?
ใช้เอนจิน JavaScript (ECMAScript) ที่มีในเบราว์เซอร์ของคุณ ตัวเดียวกับที่ Node.js, Deno และทุกเบราว์เซอร์ใช้ ไวยากรณ์ส่วนใหญ่ใช้ร่วมกับ PCRE, Python และ Java แต่บางความสามารถ เช่น possessive quantifier และ recursion ไม่รองรับ
› ทำไมแพทเทิร์นของฉันเจอแค่รายการเดียว?
เปิดแฟล็ก Global (g) หากไม่เปิด JavaScript จะหยุดหลังเจอรายการแรก
› อ้างถึงกลุ่มในข้อความแทนที่อย่างไร?
ใช้ $1, $2… สำหรับกลุ่มแบบลำดับเลข $<name> สำหรับกลุ่มที่ตั้งชื่อ $& สำหรับข้อความที่ตรงทั้งหมด และ $$ สำหรับเครื่องหมายดอลลาร์ตามตัวอักษร
› ทำไม ^ และ $ ไม่ตรงกับทุกบรรทัด?
โดยค่าเริ่มต้นจะตรงเฉพาะต้นและท้ายของข้อความทั้งหมด เปิด หลายบรรทัด (m) เพื่อให้ตรงที่การขึ้นบรรทัดใหม่ด้วย
› ข้อความของฉันถูกส่งไปที่ไหนหรือไม่?
ไม่ การจับคู่ทำงานในเบราว์เซอร์ของคุณ แพทเทิร์นที่ช้ามาก (catastrophic backtracking) อาจทำให้แท็บค้างได้ จึงควรเลี่ยง quantifier ซ้อนกันอย่าง (a+)+ กับอินพุตที่ยาว