สรุปสัญลักษณ์ Regex และเครื่องมือแสดงภาพ

เรียนรู้สัญลักษณ์ของนิพจน์ทั่วไปอย่างรวดเร็ว แยกรูปแบบออกเป็นส่วน ๆ ที่เข้าใจง่าย แล้วทดสอบกับข้อความของคุณเอง ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

/
/
วางนิพจน์ทั่วไปเพื่อดูคำอธิบายทีละส่วน
แฟล็ก
ส่วนต่าง ๆ
พิมพ์รูปแบบด้านบนเพื่อดูส่วนประกอบของมัน

ไม่บังคับ พิมพ์หรือวางข้อความ แล้วผลที่ตรงกันจะปรากฏขณะที่คุณพิมพ์

สรุปสัญลักษณ์


. อักขระใดก็ได้ ยกเว้นการขึ้นบรรทัดใหม่ ตัวอย่าง: a.c
\d ตัวเลข (0-9) ตัวอย่าง: \d+
\D อักขระใดก็ได้ที่ไม่ใช่ตัวเลข ตัวอย่าง: \D+
\w อักขระของคำ (a-z, A-Z, 0-9, _) ตัวอย่าง: \w+
\W อักขระใดก็ได้ที่ไม่ใช่อักขระของคำ ตัวอย่าง: \W+
\s อักขระช่องว่าง ตัวอย่าง: \s+
\S อักขระใดก็ได้ที่ไม่ใช่ช่องว่าง ตัวอย่าง: \S+
^ จุดเริ่มต้นของข้อความ ตัวอย่าง: ^hello
$ จุดสิ้นสุดของข้อความ ตัวอย่าง: world$
\b ขอบเขตของคำ ตัวอย่าง: \bword\b
\B ตำแหน่งที่ไม่ใช่ขอบเขตของคำ ตัวอย่าง: \Bword\B
[abc] ชุดอักขระ ตัวอย่าง: [abc]+
[^abc] ชุดอักขระแบบปฏิเสธ ตัวอย่าง: [^abc]+
[a-z] ชุดอักขระ ตัวอย่าง: [a-z0-9]+
(abc) กลุ่มจับค่า ตัวอย่าง: (abc)
(?:abc) กลุ่มที่ไม่จับค่า ตัวอย่าง: (?:abc)+
(?<n>) กลุ่มที่มีชื่อ ตัวอย่าง: (?<year>\d{4})
\1 การอ้างย้อนกลับ ตัวอย่าง: (\w)\1
a|b ทางเลือก ตัวอย่าง: cat|dog
? มีหรือไม่มีก็ได้ (0 หรือ 1) ตัวอย่าง: colou?r
* ทำซ้ำ 0 ครั้งขึ้นไป ตัวอย่าง: a*
+ ทำซ้ำ 1 ครั้งขึ้นไป ตัวอย่าง: a+
{m,n} ทำซ้ำตามจำนวนครั้งที่กำหนด ตัวอย่าง: a{2,4}
+? เหมือนกัน แต่ให้สั้นที่สุด ตัวอย่าง: <.+?>
(?=) เฉพาะเมื่อตามด้วย ตัวอย่าง: foo(?=bar)
(?!) เฉพาะเมื่อไม่ได้ตามด้วย ตัวอย่าง: foo(?!bar)
(?<=) เฉพาะเมื่อนำหน้าด้วย ตัวอย่าง: (?<=\$)\d+
(?<!) เฉพาะเมื่อไม่ได้นำหน้าด้วย ตัวอย่าง: (?<!\$)\d+
\. ถืออักขระถัดไปเป็นตัวอักษรธรรมดา ตัวอย่าง: 3\.14
\n การขึ้นบรรทัดใหม่ ตัวอย่าง: line\n
\t แท็บ ตัวอย่าง: \tindented

รูปแบบตรวจสอบที่พบบ่อย


การใช้งานรูปแบบคำอธิบายตัวอย่างที่ตรงกัน
ที่อยู่อีเมล^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$ตรวจสอบรูปแบบทั่วไปของที่อยู่อีเมลuser@example.com
หมายเลขโทรศัพท์ (สหรัฐฯ)^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ตรงกับหมายเลขสิบหลัก ไม่ว่าจะมีขีด เว้นวรรค หรือวงเล็บหรือไม่ก็ตาม123-456-7890
รหัสไปรษณีย์ (สหรัฐฯ)^\d{5}(-\d{4})?$ตรงกับรหัสไปรษณีย์ห้าหลักและเก้าหลัก90210-1234
วันที่ (YYYY-MM-DD)^\d{4}-\d{2}-\d{2}$ตรงกับรูปแบบวันที่แบบตัวเลขอย่างง่าย2026-09-16
ที่อยู่ IP (IPv4)^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ตรงกับรูปแบบของที่อยู่ IPv4 โดยไม่ตรวจว่าแต่ละส่วนอยู่ระหว่าง 0 ถึง 255 หรือไม่192.168.1.1

รูปแบบเหล่านี้ตรวจสอบรูปร่างของค่า ไม่ใช่ว่าค่านั้นมีอยู่จริงหรือไม่ ที่อยู่หนึ่งอาจตรงกับรูปแบบอีเมลอย่างสมบูรณ์แต่ส่งไม่ถึงก็ได้ จึงควรใช้เพื่อจับคำพิมพ์ผิดตั้งแต่เนิ่น ๆ ไม่ใช่ใช้เป็นการตรวจสอบเพียงอย่างเดียว

เครื่องมือนี้ให้อะไรบ้าง


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

ใช้เมื่อไร


ใช้ตอนเขียนรูปแบบ ตอนอ่านรูปแบบของคนอื่น หรือตอนอธิบายพื้นฐาน regex ให้เพื่อนร่วมงานฟัง การอ่านรูปแบบออกเสียงทีละท่อนมักเป็นสิ่งที่ทำให้เข้าใจได้

ข้อจำกัด


การแยกส่วนยึดตามนิพจน์ทั่วไปของจาวาสคริปต์ เพราะนั่นคือสิ่งที่เบราว์เซอร์ของคุณรัน สำเนียงอื่นต่างออกไป: PCRE, Python, Java และ .NET ต่างเพิ่มไวยากรณ์ของตัวเอง ส่วนเครื่องมือ POSIX อย่าง grep และ sed ใช้ไวยากรณ์ที่เก่ากว่าและเล็กกว่า ที่ทดสอบรันรูปแบบของคุณในเธรดแยกและหยุดมันหลังผ่านไปไม่กี่วินาที รูปแบบที่ย้อนกลับไม่รู้จบจึงไม่อาจทำให้หน้าเว็บค้างได้

วิธีใช้สรุปสัญลักษณ์


ค้นหาสัญลักษณ์ หรือวางรูปแบบแล้วอ่านทีละส่วน

  1. ไล่ดูหรือค้นหาในรายการสัญลักษณ์
  2. วางรูปแบบเพื่อดูว่ามันถูกแยกเป็นส่วนใดบ้าง
  3. พิมพ์ข้อความตัวอย่างเพื่อดูว่าอะไรตรงกันจริง แล้วปรับรูปแบบ

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


เครื่องมือนี้ส่งรูปแบบของฉันไปที่ไหนหรือไม่
ไม่ ทั้งการแยกส่วนและการค้นหารายการที่ตรงกันทำงานในเบราว์เซอร์ของคุณ ทั้งรูปแบบและข้อความไม่ถูกส่งไปที่ใดเลย

ยึดตามสำเนียง regex แบบใด
แบบจาวาสคริปต์ เพราะนั่นคือเอนจินที่ทำงานจริง สิ่งที่อยู่ในหน้านี้ส่วนใหญ่ — คลาสอักขระ กลุ่ม ตัวระบุจำนวน จุดยึด — เหมือนกันในทุกสำเนียง

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

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

Wikipedia — Regular expression
Wikipedia — PCRE
Wikipedia — Finite-state machine
Wikipedia — ReDoS
Wikipedia — Backtracking