DevToolPal
ไทย

ทดสอบ Regex

ทดสอบ regular expression ของ JavaScript แบบเรียลไทม์ ไฮไลต์รายการที่ตรง ตรวจดู capture group และพรีวิวการแทนที่

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

ข้อความทดสอบ

0 ตัวอักษร · 0 B

ผลลัพธ์

ผลลัพธ์จะแสดงที่นี่

เครื่องมือนี้ทำอะไร

ตัวทดสอบ regex ให้คุณเขียน regular expression แล้วเห็นทันทีขณะพิมพ์ว่าตรงกับอะไรในข้อความตัวอย่างบ้าง รายการที่ตรงจะถูกไฮไลต์ในตำแหน่งจริง ทุก capture group แสดงพร้อมค่าและตำแหน่ง และเทมเพลตการแทนที่ (ไม่บังคับ) จะแสดงว่า String.replace จะให้ผลอย่างไร

วิธีใช้งาน

  1. วางข้อความที่ต้องการค้นหาลงใน ข้อความทดสอบ หรือคลิก ตัวอย่าง
  2. พิมพ์แพทเทิร์นลงใน Regular expression ในแผงตัวเลือก ไม่ต้องใส่เครื่องหมายทับครอบ
  3. เปิดแฟล็กที่ต้องการ: g สำหรับทุกรายการที่ตรง, i เพื่อไม่สนตัวพิมพ์เล็กใหญ่, m ให้ ^ และ $ ทำงานต่อบรรทัด, s ให้ . ตรงกับการขึ้นบรรทัดใหม่ด้วย และ u สำหรับ Unicode เต็มรูปแบบ
  4. อ่านผลลัพธ์: จำนวนที่ตรง ข้อความที่ไฮไลต์ และตารางของแต่ละรายการพร้อมกลุ่ม คลิก คัดลอก เพื่อคัดลอกค่าใดก็ได้
  5. หากต้องการลองแทนที่ ให้กรอก แทนที่ด้วย เช่น $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+)+ กับอินพุตที่ยาว