ตัวทดสอบ Regex

/ /

พิมพ์นิพจน์ทั่วไป วางข้อความที่จะใช้ทดสอบ แล้วตัวทดสอบจะเรียกใช้แพตเทิร์นและแสดงรายการทุกการจับคู่ที่พบ ผลลัพธ์แต่ละรายการแสดงว่าการจับคู่เริ่มที่ใดและเนื้อหาของแต่ละกลุ่มจับคู่ เพื่อให้คุณเห็นชัดว่าแพตเทิร์นจับอะไรได้บ้าง เปิดแฟล็กไม่สนใจตัวพิมพ์ใหญ่-เล็ก หลายบรรทัด และ dotall เพื่อเปลี่ยนพฤติกรรมของแพตเทิร์น

วิธีทดสอบ regex

  1. 1

    ป้อนแพตเทิร์นของคุณ

    พิมพ์นิพจน์โดยไม่ต้องมีตัวคั่น ตัวทดสอบจะครอบด้วย `/ /` ให้คุณ แพตเทิร์นที่ไม่ถูกต้องจะแสดงข้อความแสดงข้อผิดพลาดที่ชัดเจน แทนที่จะล้มเหลวเงียบ ๆ

  2. 2

    เลือกแฟล็ก

    เปิด `i` (ไม่สนใจตัวพิมพ์ใหญ่-เล็ก), `m` (หลายบรรทัด) หรือ `s` (dotall) เพื่อจับคู่ตามที่คุณต้องการ

  3. 3

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

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

  4. 4

    ตรวจสอบการจับคู่

    การจับคู่แต่ละรายการแสดงตำแหน่ง (offset) ในข้อความ การจับคู่แบบเต็ม และแต่ละกลุ่มจับคู่ที่มีหมายเลข

ตัวทดสอบแสดงอะไรให้คุณ

การรันแพตเทิร์นในหัว หรือด้วย grep เร็ว ๆ บอกได้เพียงว่ามีสิ่งที่ตรงกันหรือไม่ ตัวทดสอบยังแสดง:

  • ทุกการจับคู่ พร้อมตำแหน่งของมัน มันค้นหาทั้งข้อความเสมอ และรายงานการจับคู่แต่ละรายการด้วยตำแหน่งอักขระ (offset) ที่มันเริ่ม
  • กลุ่มใดจับอะไร การจับคู่แต่ละรายการถูกแยกเป็นการจับคู่แบบเต็มและกลุ่มจับคู่ที่มีหมายเลข เพื่อให้คุณยืนยันว่า (...) จับส่วนที่คุณคาดหวังไว้
  • แฟล็กเปลี่ยนอะไร เปิด i, m หรือ s แล้วทดสอบอีกครั้งเพื่อดูว่าการไม่สนใจตัวพิมพ์ใหญ่-เล็ก หลายบรรทัด หรือ dotall เปลี่ยนผลลัพธ์อย่างไร

แฟล็กโดยสรุป

แฟล็ก ชื่อ เปลี่ยนอะไร
i ไม่สนใจตัวพิมพ์ใหญ่-เล็ก A ตรงกับ a ด้วย และในทางกลับกัน
m หลายบรรทัด ^ และ $ ตรงกันที่ต้นและท้ายของแต่ละบรรทัด ไม่ใช่แค่ทั้งข้อความ
s Dotall . ตรงกับอักขระขึ้นบรรทัดใหม่ด้วย

การจับคู่เป็นแบบทั่วไป (global) เสมอ: ตัวทดสอบคืนทุกการจับคู่ในข้อความ จึงไม่มีแฟล็ก “global” แยกต่างหากให้ตั้ง แพตเทิร์นรันบนเอนจิน PCRE พร้อมรองรับ Unicode คลาสอย่าง \w และ \d จึงทำงานสอดคล้องกันบนข้อความนานาชาติ

ปัญหา regex ที่พบบ่อยซึ่งสิ่งนี้ช่วยให้พบ

อาการ สาเหตุที่มักพบ
การจับคู่ขนาดใหญ่รายการเดียวที่ครอบคลุมทุกอย่าง .* เป็นแบบตะกละ ใช้ .*? หรือคลาสปฏิเสธเช่น [^"]*
^ หรือ $ ตรงกันแค่ครั้งเดียว ขาดแฟล็ก m บนข้อความหลายบรรทัด
. หยุดที่การขึ้นบรรทัดใหม่ ขาดแฟล็ก s
กลุ่มจับคู่เรียงลำดับผิดคาด ( ที่ซ้อนกันเลื่อนหมายเลขกลุ่ม นับจากซ้ายไปขวา
แพตเทิร์นทำงานช้า * หรือ + ที่ซ้อนกันเหนือทางเลือกที่ทับซ้อนทำให้เกิดการย้อนรอยหนัก

เคล็ดลับสำหรับแพตเทิร์นที่เร็วและปลอดภัยกว่า

  • ยึดด้วย ^ เมื่อการจับคู่เริ่มที่ต้น เพื่อให้เอนจินไม่ต้องไล่ดูทั้งสตริง
  • เลือกคลาสอักขระ ([abc]) แทนการสลับ (a|b|c) คลาสเร็วกว่าในทุกเอนจินหลัก
  • แทน .* แบบตะกละด้วยคลาสปฏิเสธเช่น [^"]* เมื่อคุณรู้ตัวปิดท้าย เพื่อไม่ให้เกิดการย้อนรอย

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

มันรันแพตเทิร์นของคุณด้วย PCRE ซึ่งเป็นเอนจินที่มีในตัว PHP โดยเปิดโหมด Unicode ไวยากรณ์เฉพาะของ PCRE เช่น \d, \b และ lookaround ทำงานตามที่คาด หากคุณจะนำแพตเทิร์นไปใช้ใน JavaScript, Python หรือภาษาอื่น ให้ตรวจสอบความต่างเล็กน้อยของไวยากรณ์ก่อนนำขึ้นใช้จริง

ทุกการจับคู่ ตัวทดสอบค้นหาทั้งข้อความเสมอ จึงไม่มีแฟล็ก “global” แยกต่างหากให้ตั้ง การจับคู่แต่ละรายการถูกแสดงพร้อมตำแหน่งในข้อความ

ได้ การจับคู่แต่ละรายการถูกแยกเป็นการจับคู่แบบเต็มและแต่ละกลุ่มจับคู่ที่มีหมายเลข เพื่อให้คุณยืนยันว่า (...) แต่ละอันจับส่วนใดของข้อความ

i ทำให้การจับคู่ไม่สนใจตัวพิมพ์ใหญ่-เล็ก m ทำให้ ^ และ $ ตรงกันที่ทุกขอบบรรทัด และ s ทำให้ . ตรงกับอักขระขึ้นบรรทัดใหม่ เปิดหรือปิดแล้วทดสอบอีกครั้งเพื่อเปรียบเทียบผลลัพธ์

ตัวทดสอบแสดงข้อความแสดงข้อผิดพลาดที่ชัดเจนซึ่งอธิบายปัญหา เช่น วงเล็บเหลี่ยมที่ไม่ปิดหรือกลุ่มที่ไม่จบ แทนที่จะคืนผลว่าไม่มีการจับคู่อย่างเงียบ ๆ

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig จากกฎการเยื้อง การจบบรรทัด และชุดอักขระของคุณ แล้วเพิ่มเซกชันที่ถูกต้องให้ทุกภาษาในรีโพซิทอรี ทั้ง Python, Go, YAML, Makefile และอื่น ๆ

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น