ข้ามไปยังเนื้อหา

ทดสอบ Regular Expression

ทดสอบ Regular Expression แบบ JavaScript กับข้อความของคุณ พร้อมไฮไลต์ผลที่ตรงกันแบบเรียลไทม์ แคปเจอร์กรุ๊ป และคำอธิบายด้วยภาษาที่เข้าใจง่าย ทำงานในเบราว์เซอร์ของคุณ

รูปแบบ regex ของ JavaScript (ECMAScript)เอนจินเดียวกับเบราว์เซอร์ Node.js และ Deno ของคุณ
//g

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

รายการที่ตรงกันและกลุ่มที่จับจะแสดงที่นี่

ทำงานในเบราว์เซอร์ของคุณ · ไม่ต้องอัปโหลดวิธีการทำงาน

วิธีใช้งาน ทดสอบ Regex

  1. 1

    ป้อนรูปแบบ

    พิมพ์นิพจน์ทั่วไปโดยไม่ต้องใส่เครื่องหมายสแลช ส่วนแฟลกให้เลือกที่ปุ่มสลับด้านล่าง

  2. 2

    เพิ่มสตริงทดสอบ

    วางข้อความที่ต้องการค้นหา รายการที่ตรงกันจะถูกไฮไลต์และแสดงพร้อมกลุ่มที่จับได้ขณะพิมพ์

  3. 3

    ดูคำอธิบาย

    เปิด คำอธิบาย เพื่ออ่านความหมายของแต่ละโทเคนเป็นภาษาที่เข้าใจง่าย และดูว่ารูปแบบนี้ทำอะไรจริง ๆ

  4. 4

    ดูตัวอย่างการแทนที่

    พิมพ์ข้อความแทนที่โดยใช้ $1 หรือ $<name> เพื่อดูผลลัพธ์ แล้วคัดลอกโค้ดจากแท็บ โค้ด

ข้อจำกัดและ Pro

ใช้ฟรีโดยไม่ต้องสมัครสมาชิก: นับรายการที่ตรงกันได้สูงสุด 100,000 รายการ ไฮไลต์ 2,000 รายการ และแสดงในตาราง 200 รายการ การไฮไลต์รองรับสตริงทดสอบยาวไม่เกิน 200,000 ตัวอักษร และการทำงานแต่ละครั้งจะหยุดเมื่อครบ 1.5 วินาที

Pro ช่วยเอาโฆษณาออก ส่วนการทำงานของเครื่องมือเหมือนกันในทุกแพ็กเกจ ดู Pro

เกี่ยวกับ ทดสอบ Regex

เครื่องมือนี้ทดสอบรูปแบบของคุณด้วยเอนจินนิพจน์ทั่วไปของ JavaScript (ECMAScript) ที่มีอยู่ในเบราว์เซอร์ ซึ่งเป็นตัวเดียวกับที่ Node.js, Deno, Bun และเว็บเพจทุกหน้าใช้ ดังนั้นสิ่งที่ตรงกันที่นี่ก็จะตรงกันในโค้ดของคุณ พิมพ์รูปแบบและสตริงทดสอบ แล้วทุกรายการที่ตรงกันจะถูกไฮไลต์ทันทีขณะพิมพ์ พร้อมตารางแสดงตำแหน่ง กลุ่มที่มีหมายเลข กลุ่มที่มีชื่อ และจุดเริ่มต้นกับจุดสิ้นสุดของแต่ละกลุ่มเมื่อเปิดแฟลก d

สลับใช้ได้ครบทั้งแปดแฟลก ได้แก่ g เพื่อหาทุกรายการที่ตรงกัน i เพื่อไม่สนตัวพิมพ์เล็กใหญ่ m ให้ ^ และ $ ทำงานทีละบรรทัด s ให้จุดตรงกับการขึ้นบรรทัดใหม่ด้วย u สำหรับ Unicode เต็มรูปแบบและ \p{…} v สำหรับชุด Unicode ที่ใช้ส่วนตัดและส่วนต่างในวงเล็บเหลี่ยมได้ y สำหรับการจับคู่แบบ sticky และ d สำหรับดัชนี ช่อง แทนที่ด้วย จะแสดงตัวอย่างผลของ String.prototype.replace โดยใช้ $1, $<name>, $& และโทเคนแทนที่อื่น ๆ ส่วนแท็บ โค้ด มีตัวอย่างแบบ literal, matchAll และ RegExp() ที่ตรงกับรูปแบบของคุณ

แท็บ คำอธิบาย จะแยกรูปแบบเป็นโทเคนและอธิบายเป็นภาษาที่เข้าใจง่ายว่าแต่ละส่วนทำอะไร ทั้งกลุ่ม lookaround คลาสอักขระ Quantifier และบอกว่าเป็นแบบ greedy หรือ lazy ส่วน สรุปสั้น ๆ ช่วยแทรกโทเคนที่ใช้บ่อยตรงตำแหน่งเคอร์เซอร์

การจับคู่ทำงานใน Web Worker เบื้องหลังโดยจำกัดเวลา 1.5 วินาที รูปแบบที่ backtrack รุนแรง เช่น (a+)+b กับตัว a ที่ต่อกันยาว ๆ จะถูกหยุดพร้อมคำอธิบาย แทนที่จะทำให้แท็บค้าง รูปแบบที่เขียนสำหรับ PCRE, Python หรือ .NET อาจต้องแก้ไข เพราะ possessive quantifier, atomic group, recursion, \A และ \Z ไม่มีใน JavaScript

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

รูปแบบและสตริงทดสอบอยู่ในแท็บเบราว์เซอร์นี้เท่านั้น การจับคู่ทำงานใน Web Worker บนอุปกรณ์ของคุณ และสิ่งที่คุณพิมพ์จะไม่ถูกอัปโหลด บันทึก หรือเก็บไว้ จึงทดสอบกับบรรทัดล็อกหรือข้อมูลลูกค้าจริงได้อย่างปลอดภัย

คุณสมบัติ

เอนจิน JS ตัวจริง

จับคู่เหมือน RegExp ในเบราว์เซอร์และ Node.js ทุกประการ รวมถึงชุดของแฟลก v และกลุ่มที่มีชื่อ

อธิบายทีละโทเคน

ทุกกลุ่ม คลาส anchor และ Quantifier มีคำอธิบายเป็นภาษาที่เข้าใจง่าย

ป้องกัน backtracking

การจับคู่ทำงานใน worker โดยจำกัดเวลา 1.5 วินาที รูปแบบที่มีปัญหาจึงไม่ทำให้หน้าเว็บค้าง

ทดสอบ Regex: คำถามที่พบบ่อย

เครื่องมือนี้ใช้ regex แบบไหน?
แบบของ JavaScript ตามมาตรฐาน ECMAScript และตามที่เบราว์เซอร์ของคุณใช้งานจริง รองรับ lookbehind กลุ่มที่มีชื่อ Unicode property escape และแฟลก v แต่ไม่รองรับฟีเจอร์ของ PCRE เช่น possessive quantifier, atomic group, recursion หรือ conditional ไวยากรณ์ (?P<name>…) ของ Python ต้องเขียนเป็น (?<name>…) ผลลัพธ์ตรงกับ Node.js และ Deno ที่ใช้เอนจินรุ่นเดียวกัน
ทำไมรูปแบบของฉันพบแค่รายการแรก?
หากไม่มีแฟลก g JavaScript จะหยุดหลังพบรายการแรก exec และ match จะคืนผลเพียงรายการเดียว และ replace จะเปลี่ยนเฉพาะที่พบครั้งแรก เปิดแฟลก g เพื่อค้นหาและแทนที่ทุกรายการ แฟลก sticky y ต่างออกไป คือจะตรงกันเฉพาะตำแหน่งที่การจับคู่ครั้งก่อนสิ้นสุดพอดี ซึ่งมีประโยชน์กับตัวแยกโทเคน
catastrophic backtracking คืออะไร?
เมื่อรูปแบบจับคู่ข้อความเดียวกันได้หลายวิธี เช่น Quantifier ซ้อนกันอย่าง (a+)+ หรือ (.*)* หากจับคู่ไม่สำเร็จ เอนจินจะลองทุกชุดผสม ซึ่งเพิ่มขึ้นแบบเอกซ์โปเนนเชียลตามความยาวข้อมูล ที่นี่จะหยุดหลัง 1.5 วินาทีพร้อมคำเตือน แก้ได้โดยทำให้ตัวเลือกไม่ซ้อนทับกัน เช่นใช้ [^,]* แทน .* ก่อนเครื่องหมายจุลภาค
ใช้กลุ่มที่จับได้ในการแทนที่อย่างไร?
เขียน $1, $2 และต่อไปสำหรับกลุ่มที่มีหมายเลข หรือ $<name> สำหรับกลุ่มที่มีชื่อ เช่น (?<year>\d{4}) ส่วน $& แทรกข้อความที่ตรงกันทั้งหมด $` แทรกข้อความก่อนหน้า $' แทรกข้อความถัดไป และ $$ ให้เครื่องหมายดอลลาร์จริง ปุ่ม ลองใช้ตัวอย่าง จะโหลดรูปแบบวันที่ที่สลับลำดับปี เดือน และวันด้วยวิธีนี้
เมื่อไรต้องใช้แฟลก u หรือ v?
ใช้ u เมื่อข้อความมีอีโมจิหรืออักขระนอก Basic Multilingual Plane เพื่อให้จุดและ Quantifier นับเป็นหนึ่งอักขระ และเพื่อใช้ Unicode property แบบ \p{L} ส่วนแฟลก v ที่ใหม่กว่ามีทุกอย่างของ u และเพิ่มการดำเนินการกับเซตในวงเล็บเหลี่ยม เช่น [\p{L}--[a-z]] สำหรับตัวอักษรที่ไม่ใช่ ASCII ทั้งสองแฟลกใช้ร่วมกันไม่ได้
เครื่องมือสำหรับนักพัฒนา ทั้งหมด