สรุปสัญลักษณ์ 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)\1a|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 ใช้ไวยากรณ์ที่เก่ากว่าและเล็กกว่า ที่ทดสอบรันรูปแบบของคุณในเธรดแยกและหยุดมันหลังผ่านไปไม่กี่วินาที รูปแบบที่ย้อนกลับไม่รู้จบจึงไม่อาจทำให้หน้าเว็บค้างได้
วิธีใช้สรุปสัญลักษณ์
ค้นหาสัญลักษณ์ หรือวางรูปแบบแล้วอ่านทีละส่วน
- ไล่ดูหรือค้นหาในรายการสัญลักษณ์
- วางรูปแบบเพื่อดูว่ามันถูกแยกเป็นส่วนใดบ้าง
- พิมพ์ข้อความตัวอย่างเพื่อดูว่าอะไรตรงกันจริง แล้วปรับรูปแบบ
คำถามที่พบบ่อย
เครื่องมือนี้ส่งรูปแบบของฉันไปที่ไหนหรือไม่
ไม่ ทั้งการแยกส่วนและการค้นหารายการที่ตรงกันทำงานในเบราว์เซอร์ของคุณ ทั้งรูปแบบและข้อความไม่ถูกส่งไปที่ใดเลย
ยึดตามสำเนียง regex แบบใด
แบบจาวาสคริปต์ เพราะนั่นคือเอนจินที่ทำงานจริง สิ่งที่อยู่ในหน้านี้ส่วนใหญ่ — คลาสอักขระ กลุ่ม ตัวระบุจำนวน จุดยึด — เหมือนกันในทุกสำเนียง
ทดสอบรูปแบบของฉันที่นี่ได้ไหม
ได้ พิมพ์ข้อความในกล่องทดสอบ แล้วรายการที่ตรงกันจะถูกเน้นให้เห็น พร้อมกลุ่มที่จับได้ของแต่ละรายการ
ทำไมรูปแบบของฉันถูกหยุด
บางรูปแบบใช้เวลาแบบเลขชี้กำลังกับข้อความที่เกือบจะตรงกัน สาเหตุที่พบบ่อยคือตัวระบุจำนวนซ้อนกัน เช่น (a+)+b ที่ทดสอบยอมแพ้หลังผ่านไปไม่กี่วินาทีแทนที่จะทำให้หน้าเว็บค้าง และการหยุดนั้นเองก็เป็นคำเตือนที่มีประโยชน์: รูปแบบเดียวกันนี้ก็จะทำให้เซิร์ฟเวอร์หยุดทำงานเช่นกัน
Wikipedia — Regular expression
Wikipedia — PCRE
Wikipedia — Finite-state machine
Wikipedia — ReDoS
Wikipedia — Backtracking