tigtools

Regex Tester

ป้อน pattern และข้อความเพื่อดูทุกการจับคู่แบบไฮไลต์ พร้อมตำแหน่งและ capture group ใช้เอนจิน regex JavaScript ของเบราว์เซอร์คุณ

ทำงานในเบราว์เซอร์ของคุณ ไม่ต้องสมัคร

แฟล็ก

ใช้ $1, $2 … สำหรับกลุ่มแบบหมายเลข, $<name> สำหรับกลุ่มแบบมีชื่อ, $& สำหรับข้อความที่ตรงกันทั้งหมด และ $$ สำหรับเครื่องหมายดอลลาร์

วิธีใช้งาน

  1. พิมพ์ regular expression ในช่อง Pattern โดยไม่ต้องใส่เครื่องหมายสแลชคร่อม
  2. ติ๊กแฟล็กที่ต้องการ g (global) จะค้นหาทุกการจับคู่แทนที่จะเจอเฉพาะรายการแรก
  3. วางข้อความที่ต้องการค้นหา ข้อความที่ตรงจะถูกไฮไลต์ และแต่ละรายการจะแสดงพร้อมตำแหน่งและ capture group
  4. จะป้อนข้อความแทนที่ เช่น $2-$1 เพื่อดูตัวอย่างผลลัพธ์ของ String.replace ก็ได้

วิธีการทำงาน

เครื่องมือทดสอบนี้รันรูปแบบของคุณด้วยออบเจ็กต์ RegExp ที่มีในเบราว์เซอร์ ดังนั้นผลลัพธ์จึงเหมือนกับที่โค้ด JavaScript (ECMAScript) ในเบราว์เซอร์นั้นจะผลิตออกมาทุกประการ ภาษาอื่นใช้รูปแบบ regex ที่แตกต่างกัน: PCRE (PHP), โมดูล re ของ Python, Java และ .NET รองรับฟีเจอร์ที่ JavaScript ไม่มี เช่น possessive quantifiers (a++), atomic groups ((?>…)), inline modifiers เช่น (?i) และการเรียกซ้ำ และมีความแตกต่างในรายละเอียด เช่น \A และ \Z anchors ควรทดสอบรูปแบบในภาษานั้นๆ ก่อนนำไปใช้จริง Lookbehind ((?<=…)), named groups ((?<name>…)) และ Unicode property escapes (\p{L} กับแฟล็ก u) ทำงานได้ในเบราว์เซอร์ปัจจุบันทุกรุ่น

หากไม่มีแฟล็ก g หรือ y จะพบเฉพาะแมตช์แรกเท่านั้น เช่นเดียวกับ RegExp.exec แมตช์ความยาวศูนย์ เช่น ^ หรือ \b จะแสดงรายการแต่ไม่ไฮไลต์ หลังจากแมตช์หนึ่ง การค้นหาจะเลื่อนไปทีละหนึ่งอักขระ (หนึ่ง code point เมื่อใช้แฟล็ก u) เช่นเดียวกับที่ String.matchAll ทำ กลุ่มแคปเจอร์จะแสดงตามหมายเลข และถ้ามีการกำหนดชื่อ ก็จะแสดงตามชื่อ กลุ่มที่ไม่ได้มีส่วนร่วมในแมตช์จะถูกทำเครื่องหมายว่าไม่มีค่า ซึ่งต่างจากแมตช์ว่าง

บางรูปแบบ เช่น (a+)+$ บนบรรทัดยาวที่ไม่มีแมตช์ จะใช้เวลาแบบเอกซ์โพเนนเชียลในการล้มเหลว (catastrophic backtracking) เพื่อลดความเสี่ยง การแมตช์จะเริ่มหลังจากคุณหยุดพิมพ์ครู่หนึ่ง โดยจะค้นหาเฉพาะ 100,000 อักขระแรกของข้อความ และเก็บแมตช์ได้สูงสุด 1,000 แมตช์ รูปแบบที่ผิดปกติอาจทำให้แท็บไม่ตอบสนองชั่วขณะ หากเกิดเหตุการณ์นั้น ให้ปรับรูปแบบให้ง่ายขึ้นหรือย่อข้อความให้สั้นลง

ตัวอย่าง

การสกัดวันที่

รูปแบบ (\d{4})-(\d{2})-(\d{2}) พร้อมแฟล็ก g บน “Due 2026-03-15, paid 2026-04-02” จะพบแมตช์สองครั้ง กลุ่มที่ 1 คือปี การแทนที่ $3.$2.$1 จะเปลี่ยนข้อความเป็น “Due 15.03.2026, paid 02.04.2026”

Named groups เพื่อโค้ดที่อ่านง่าย

(?<key>\w+)=(?<value>[^&]*) บน query string a=1&b=two จะแสดง key และ value สำหรับแต่ละคู่ ซึ่งตรงกับที่ match.groups.key และ match.groups.value ส่งคืนใน JavaScript

ค้นหาแบบไม่แยกตัวพิมพ์เล็กใหญ่ข้ามหลายบรรทัด

^error:.* ร่วมกับแฟล็ก g, i และ m จะจับคู่ทุกบรรทัดของล็อกที่ขึ้นต้นด้วย Error:, ERROR: หรือ error: เนื่องจาก m ทำให้ ^ ตรงกับตำแหน่งต้นบรรทัดแต่ละบรรทัด

คำถามที่พบบ่อย

regex ของฉันจะทำงานเหมือนกันใน Python, PHP หรือ Java ไหม

ไม่จำเป็นเสมอไป เครื่องมือนี้ใช้เอนจิน JavaScript ไวยากรณ์พื้นฐานใช้ร่วมกันได้ แต่ฟีเจอร์อย่าง possessive quantifiers, atomic groups, inline flags อย่าง (?i) และ escape sequences บางตัวมีเฉพาะใน dialect อื่น และบางอย่างทำงานต่างออกไป ควรทดสอบในภาษาเป้าหมายเสมอ

ทำไมจึงพบการจับคู่เพียงรายการเดียว

เพราะไม่ได้เปิดแฟล็ก g (global) หากไม่มีแฟล็กนี้ JavaScript จะคืนค่าเฉพาะการจับคู่แรก ให้ติ๊ก g เพื่อค้นหาทั้งหมด

ฉันควรพิมพ์เครื่องหมายสแลชคร่อม pattern ไหม

ไม่ต้อง ป้อนเฉพาะ pattern เช่น \d+ แทนที่จะเป็น /\d+/g แล้วเลือกแฟล็กผ่านช่องติ๊ก รูปแบบ JavaScript literal จะแสดงใต้ผลลัพธ์สำหรับคัดลอกไปใช้ในโค้ด

ทำไมหน้าเว็บจึงช้าลงเมื่อใช้ pattern ของฉัน

ตัวระบุปริมาณซ้อนกัน เช่น (a+)+ หรือ (.*)* อาจทำให้เอนจินลองเส้นทางจำนวนมหาศาลแบบเอกซ์โพเนนเชียลเมื่อไม่มีการจับคู่ ควรทำให้ pattern เจาะจงขึ้น เช่น แทนที่ .* ด้วย [^,]* หรือใช้ anchor ตัวทดสอบจำกัดข้อความไว้ที่ 100,000 อักขระเพื่อลดผลกระทบ

ความเป็นส่วนตัว

pattern และข้อความของคุณถูกประมวลผลในเบราว์เซอร์ของคุณเท่านั้นโดยเอนจิน JavaScript ไม่มีการอัปโหลด จัดเก็บ หรือรวมอยู่ใน analytics