แปลงฟรี

นิพจน์ทั่วไป ผู้ทดสอบ

ทดสอบและแก้ไขนิพจน์ทั่วไปทันทีในเบราว์เซอร์ของคุณ ไฮไลท์การจับคู่ ดูกลุ่มจับภาพ และใช้โหมดแทนที่ — ฟรีและเป็นส่วนตัว

//g
ธง:

เกี่ยวกับเครื่องมือนี้

นิพจน์ทั่วไปเป็นภาษาเฉพาะโดเมนสำหรับการจับคู่รูปแบบในข้อความ พวกเขาเป็นส่วนหนึ่งของการประมวลผลมาตั้งแต่ปี 1968 และปัจจุบันได้ถูกสร้างขึ้นในทุกภาษาการเขียนโปรแกรมสมัยใหม่ โปรแกรมแก้ไขข้อความ และเครื่องมือค้นหาบรรทัดคำสั่ง ไวยากรณ์มีความกระชับแต่มีแนวโน้มที่จะเกิดข้อผิดพลาด: การเปลี่ยนแปลงเล็กๆ น้อยๆ ทำให้เกิดพฤติกรรมการจับคู่ที่แตกต่างกันอย่างละเอียด และนิพจน์ที่ซับซ้อนจะไม่สามารถอ่านได้อย่างรวดเร็ว ผู้ทดสอบที่แสดงการจับคู่แบบเรียลไทม์ในขณะที่คุณแก้ไขรูปแบบคือวิธีที่มีประสิทธิภาพที่สุดในการพัฒนาและตรวจสอบ regex

เครื่องมือทดสอบนี้ทำงานในเบราว์เซอร์ของคุณโดยใช้กลไก JavaScript regex (แบบเดียวกับที่แอปพลิเคชันของคุณใช้หากทำงานในเบราว์เซอร์) รูปแบบและข้อความทดสอบจะอัปเดตตามปฏิกิริยา: ทุกการเปลี่ยนแปลงในการรันการแข่งขันใหม่ กลุ่มการจับคู่จะถูกไฮไลต์ กลุ่มที่บันทึกไว้จะแสดงรายการ และแฟล็ก (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ หลายบรรทัด ทั่วโลก) จะถูกเปิดเผยสำหรับการทดสอบ

ไวยากรณ์ Regex จะแตกต่างกันไปในแต่ละเครื่องยนต์ JavaScript เป็นไปตามข้อกำหนด ECMAScript Python, PCRE (ใช้โดย PHP และอื่นๆ อีกมากมาย), Java และ Go ต่างก็มีภาษาถิ่นของตัวเองซึ่งมีฟีเจอร์ที่ทับซ้อนกันแต่ไม่เหมือนกัน รูปแบบที่พัฒนาที่นี่ใช้ไวยากรณ์ ECMAScript การพกพาข้ามเครื่องยนต์จำเป็นต้องตรวจสอบเอกสารประกอบของแต่ละเป้าหมาย

เหตุใดจึงต้องใช้เครื่องทดสอบ Regex

ข้อบกพร่องของ Regex นั้นยากที่จะแก้ไขหลังจากการปรับใช้อย่างฉาวโฉ่ รูปแบบที่ดูสมเหตุสมผลอาจเข้ากันมากหรือน้อยกว่าที่ตั้งใจไว้ ล้มเหลวใน Edge Case หรือมีการย้อนรอยอย่างรุนแรงในอินพุตบางอย่าง รูปแบบการทดสอบแบบโต้ตอบกับอินพุตของตัวแทนจะตรวจจับปัญหาก่อนการตรวจสอบโค้ดและการผลิต

รูปแบบยังได้รับประโยชน์จากเอกสารประกอบ การแสดง regex ควบคู่ไปกับอินพุตที่ควรตรงกันและอินพุตที่ไม่ควรตรงกันจะทำให้มีเจตนาที่ชัดเจน ผู้ดูแลในอนาคต (รวมถึงตัวคุณเองในอีกหกเดือนด้วย) ชื่นชมกรณีทดสอบที่ได้รับการบันทึกไว้มากกว่าที่พวกเขาชื่นชมกับเอกสารประกอบที่ชาญฉลาด

วิธีใช้งาน

พิมพ์รูปแบบ พิมพ์อินพุตทดสอบ ดูการแข่งขันที่ไฮไลต์สด

  1. ป้อนรูปแบบของคุณ: พิมพ์รูปแบบ regex ในช่องรูปแบบ ใช้งานได้ทั้ง regex ตามตัวอักษร (/pattern/flags) และรูปแบบเฉพาะรูปแบบเท่านั้น สามารถตั้งค่าสถานะผ่านการป้อนข้อมูลธง
  2. เพิ่มอินพุตทดสอบ: วางข้อความตัวอย่างที่รูปแบบควรตรงกัน (และควรเป็นข้อความที่ไม่ควรตรงกันด้วย) ผู้ทดสอบรันรูปแบบกับอินพุตและไฮไลต์การจับคู่
  3. ตั้งธง: แฟล็กทั่วไป: g (ทั่วโลก ค้นหารายการที่ตรงกันทั้งหมด), i (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่), m (หลายบรรทัด, ^ และ $ การเริ่มต้น/สิ้นสุดบรรทัดการจับคู่), s (dotall, . จับคู่บรรทัดใหม่), u (Unicode)
  4. ตรวจสอบผลลัพธ์: การแข่งขันแต่ละรายการจะถูกเน้นไว้ในอินพุต กลุ่มการบันทึกจะปรากฏในรายการพร้อมดัชนีและค่ากลุ่ม ผู้ทดสอบยังแสดงจำนวนรายการที่ตรงกันและข้อผิดพลาดในการคอมไพล์ในรูปแบบอีกด้วย

กรณีการใช้งานทั่วไป

รายละเอียดทางเทคนิค

JavaScript regex เป็นไปตามข้อกำหนด ECMAScript คุณสมบัติหลัก: คลาสอักขระ ([abc], [^abc]), ปริมาณ (*, +, ?, {n,m}), การสลับ (|), การจัดกลุ่ม ((...)), กลุ่มการจับและไม่จับ, lookahead และ lookbehind (กลไกสมัยใหม่), การอ้างอิงด้านหลัง, กลุ่มที่มีชื่อ, คุณสมบัติ Unicode Escape (พร้อมแฟล็ก u) และชุดมาตรฐานของลำดับหลีก

ความแตกต่างที่สำคัญจาก PCRE และ Python: รองรับ lookbehind ล่าสุดใน JavaScript (2018+); กลุ่มที่มีชื่อใช้ไวยากรณ์ (?<name>...) การหลีก Unicode บางตัวต้องใช้แฟล็ก u เพื่อให้ทำงานได้อย่างถูกต้อง รูปแบบที่มีไว้สำหรับการใช้งานข้ามภาษาควรได้รับการตรวจสอบกับเอกสารประกอบของแต่ละเป้าหมาย

ประสิทธิภาพ: เอ็นจิ้น regex ที่อิงการย้อนรอย (ส่วนใหญ่รวมถึง JavaScript) สามารถมีการย้อนรอยแบบหายนะในรูปแบบทางพยาธิวิทยาบางอย่าง การทดสอบที่แขวนเครื่องทดสอบไว้เป็นสัญญาณว่ารูปแบบต้องการการทำให้ง่ายขึ้น โดยทั่วไปแล้วจะหลีกเลี่ยงตัวระบุปริมาณที่ซ้อนกันและการสลับที่ไม่ชัดเจน

แนวทางปฏิบัติที่ดีที่สุด

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

เครื่องมือนี้รองรับ Regex เวอร์ชันใด
ใช้กลไก RegExp ในตัวของ JavaScript ซึ่งสนับสนุนไวยากรณ์มาตรฐานรวมถึง lookaheads, lookbehinds (ในเบราว์เซอร์สมัยใหม่), กลุ่มจับภาพที่มีชื่อ และ Escape คุณสมบัติ Unicode
ฉันสามารถทดสอบการแทนที่ regex ได้หรือไม่
ใช่. สลับไปที่โหมดแทนที่เพื่อป้อนรูปแบบการเปลี่ยน คุณสามารถใช้ $1, $2 ฯลฯ สำหรับการบันทึกการอ้างอิงย้อนกลับของกลุ่ม และ $<name> สำหรับกลุ่มที่มีชื่อ
เหตุใด regex ของฉันจึงตรงกันที่นี่แตกต่างจากใน Python/PHP
ภาษาการเขียนโปรแกรมที่แตกต่างกันมีกลไก regex ที่แตกต่างกันเล็กน้อย JavaScript ไม่รองรับการครอบครองปริมาณหรือคุณลักษณะเฉพาะบางอย่างของ PCRE ไวยากรณ์หลัก (คลาสอักขระ ปริมาณ กลุ่ม) จะเหมือนกันในทุกภาษา
เครื่องมือนี้บันทึกรูปแบบ regex ของฉันหรือไม่
ไม่ ไม่มีการบันทึกหรือถ่ายโอนข้อมูลใดๆ เครื่องมือนี้ทำงานได้อย่างสมบูรณ์ในเบราว์เซอร์ของคุณ คุณบุ๊กมาร์กหรือแชร์รูปแบบได้โดยการคัดลอกสตริง regex
ฉันจะจับคู่อักขระพิเศษตามตัวอักษรได้อย่างไร
หลบหนีมันด้วยแบ็กสแลช เพื่อให้ตรงกับจุดตัวอักษร: \. หากต้องการจับคู่แบ็กสแลชตามตัวอักษร: \\ ภายในคลาสอักขระ [...] อักขระพิเศษส่วนใหญ่จะสูญเสียความหมาย
ผู้ทดสอบทำงานบนเซิร์ฟเวอร์หรือไม่
ไม่ การรวบรวมรูปแบบและการจับคู่จะเกิดขึ้นในเบราว์เซอร์ของคุณโดยใช้ออบเจ็กต์ RegExp ดั้งเดิม
ฉันสามารถทดสอบรูปแบบสำหรับเอ็นจิ้นที่ไม่ใช่ JavaScript ได้หรือไม่
ส่วนใหญ่. สำหรับรูปแบบง่ายๆ เครื่องยนต์หลักๆ ก็เห็นด้วย สำหรับคุณสมบัติขั้นสูง (lookbehind, กลุ่มอะตอมมิก, ปริมาณที่ครอบครอง, การหลีกคุณสมบัติ Unicode) ให้ยืนยันกับเอกสารประกอบของกลไกเป้าหมาย
มันรองรับอินพุตขนาดใหญ่มากหรือไม่?
มากถึงสองสามเมกะไบต์ทำงานได้อย่างราบรื่น อินพุตขนาดใหญ่อาจทำให้เบราว์เซอร์ช้าลงหรือหยุดทำงาน โดยเฉพาะอย่างยิ่งกับรูปแบบที่มีแนวโน้มที่จะย้อนรอย