เครื่องทดสอบ Regex (แสดง match สด
พิมพ์ regex และข้อความทดสอบ — match ไฮไลต์แบบสดขณะพิมพ์ สลับ flag (g/i/m/s/u) ตรวจ capture group และ preview การแทนที่
วิธีการทำงาน
Flag แต่ละตัวทำอะไร
g (global): หา match ทั้งหมด ไม่ใช่แค่ตัวแรก จำเป็นสำหรับการแทนที่ทุกครั้ง i (case-insensitive): /[a-z]/i match ทั้งตัวพิมพ์ใหญ่และเล็ก m (multiline): ^ และ $ match ที่ขึ้นบรรทัดใหม่แทนที่จะเป็นแค่ต้น/จบ string s (dotall): . match ขึ้นบรรทัดใหม่ด้วย u (unicode): จัดการ code point เหนือ 0xFFFF ได้ถูกต้อง (emoji, ตัวอักษรใน surrogate pairs)
คนส่วนใหญ่เริ่มด้วย /g/i/m /s/ มีประโยชน์สำหรับ match ข้อความหลายบรรทัด /u/ แนะนำเมื่ออาจพบ emoji หรือตัวอักษรนอก BMP — ถ้าไม่ใช้ /./ จะไม่ match emoji 4 ไบต์เป็นอักขระเดียว
Capture group และการแทนที่
วงเล็บสร้าง capture group: /(\d{4})-(\d{2})/ บน '2026-05' จับ '2026' และ '05' แยกกัน อ้างอิงเป็น $1, $2 ในการแทนที่ Named group ใช้ (?<name>...) และอ้างอิง $<name> ในการแทนที่
เทคนิคแทนที่ทั่วไป: $& แทรก match ทั้งหมด $1, $2 เป็นต้นแทรก capture group $$ แทรก $ ตัวอักษรจริง preview การแทนที่ที่นี่ช่วยตรวจสอบก่อนรัน pattern เดียวกันบนข้อความจริง — ปลอดภัยกว่ารันโดยตรงบน production data
ข้อผิดพลาดที่ควรระวัง
การ escape backslash เพื่อ match '.' ตัวอักษรจริง ใช้'\.' ใน source string ของ JavaScript จะเป็น '\\.' แต่ในเครื่องมือนี้พิมพ์แค่ '\.' เพราะเป็น regex source โดยตรง
Catastrophic backtracking Pattern อย่าง /(a+)+/ บน 'aaaa…!' อาจใช้เวลานานมาก ถ้าการทดสอบดูเหมือนค้าง regex อาจมี nested quantifier ทำให้เรียบง่ายขึ้นหรือออกแบบให้ระมัดระวัง
Greedy กับ lazy /<.+>/ บน '<a><b>' match '<a><b>' (greedy) /<.+?>/ match '<a>' (lazy) เลือกให้เหมาะกับกรณีใช้งาน
คำถามที่พบบ่อย
›เครื่องมือนี้ใช้ regex flavor ใด?
JavaScript ECMAScript regex (ที่เบราว์เซอร์ implement) ต่างจาก PCRE ที่ใช้ใน PHP, .NET หรือ Python เล็กน้อย
›ทำไม lookbehind ไม่ทำงาน?
ทำงานได้ในเบราว์เซอร์ทันสมัย — Chrome, Firefox, Safari, Edge ทั้งหมดรองรับ (?<=...) และ (?<!...) ตั้งแต่ปี 2021 ถ้าไม่ทำงาน เบราว์เซอร์ของคุณอาจล้าสมัย
›flag 'u' ทำอะไร?
เปิดใช้การจัดการ Unicode อย่างถูกต้อง Emoji อย่าง 🎉 (ซึ่งเป็น surrogate pair ใน UTF-16) ถือเป็นอักขระเดียวด้วย /u/ แต่สองตัวในโหมดปริยาย
›จะ match tab หรือขึ้นบรรทัดใหม่ได้อย่างไร?
\t สำหรับ tab, \n สำหรับขึ้นบรรทัดใหม่, \r สำหรับ carriage return, \s สำหรับ whitespace ใดก็ได้รวมทั้งหมดนี้
›ทำไมการแทนที่ไม่ทำงาน?
บ่อยครั้งที่ลืม flag 'g' — การแทนที่โดยไม่มี 'g' จะแทนที่แค่ match แรกเท่านั้น สลับ 'g' เพื่อแทนที่ทั้งหมด
›ใช้กับข้อความยาวมากได้ไหม?
ได้ ถึงสองสามเมกะไบต์ เกินกว่านั้นเบราว์เซอร์อาจช้าลง หลีกเลี่ยง pattern ที่ล่มสลาย (nested quantifier) กับ input ยาว
›ข้อมูลออกจากเบราว์เซอร์ไหม?
ไม่ Pattern และข้อความถูกประมวลผลในเครื่องเท่านั้น
›มี cheat sheet สำหรับ regex ไหม?
ค้นหา 'JavaScript regex cheat sheet' หน้า RegExp ของ MDN เป็นข้อมูลอ้างอิงที่น่าเชื่อถือที่สุด
เครื่องมือที่เกี่ยวข้อง
อัปเดตล่าสุด: