ข้ามไปยังเนื้อหาหลัก
FreeOnlineTools Go
ไทย
อ้างอิง

Cheat Sheet Regular Expression: ไวยากรณ์ Flag และรูปแบบทั่วไป

โดย FreeOnlineTools Team · อัปเดตเมื่อ 2026-08-28

ตอบด่วน

regex รวม literal character, metacharacter (., \d, \w, \s), quantifier (*, +, ?, {n,m}), anchor (^, $, \b) และ group ((...), [...]) flag เช่น g (global), i (case-insensitive), m (multiline) เปลี่ยน match behavior ทดสอบ live ด้วย Regex Tester ของเรา

การแนะนำ

Regular expression (regex) อธิบายรูปแบบข้อความด้วยภาษา formal กระชับ รองรับโดยทุกภาษา editor และ search tool คู่มือนี้เป็น reference สำหรับ syntax ที่ ECMAScript กำหนด พร้อมรูปแบบทั่วไปที่ copy และดัดแปลงได้ ใช้ Regex Tester ของเราทดสอบรูปแบบ

ทีละขั้นตอน

  1. คลาสอักขระ —จับคู่ชุดอักขระ

    [abc] ตรงกับ a, b หรือ c [^abc] จะจับคู่อะไรก็ได้ยกเว้น a, b, c [a-z] จับคู่ตัวอักษรพิมพ์เล็ก คลาสที่กำหนดไว้ล่วงหน้า: \d = [0-9], \D = ไม่ใช่ตัวเลข, \w = [A-Za-z0-9_], \W = ไม่ใช่คำ, \s = ช่องว่าง, \S = ไม่ใช่ช่องว่าง, = อักขระใดๆ ยกเว้นขึ้นบรรทัดใหม่ (ใช้ s flag เพื่อขึ้นบรรทัดใหม่)

  2. ปริมาณ - กี่ครั้งที่จะทำซ้ำ

    * = 0 หรือมากกว่า + = 1 หรือมากกว่า ? = 0 หรือ 1 {n} = n ทุกประการ {n,} = อย่างน้อย n {n,m} = ระหว่าง n และ m เพิ่ม ? สำหรับการจับคู่แบบ Lazy Match (เช่น *? จับคู่ให้น้อยที่สุด) Greedy เป็นค่าเริ่มต้นและอาจทำให้เกิดการย้อนรอยอย่างรุนแรงในรูปแบบที่ซ้อนกัน

  3. จุดยึดและขอบเขต —ตำแหน่งที่จะจับคู่

    ^ ตรงกับจุดเริ่มต้นของสตริง (หรือบรรทัดที่มีแฟล็ก m) $ ตรงกับจุดสิ้นสุด \b จับคู่ขอบเขตคำ (ระหว่าง \w และ \W) \B จับคู่ขอบเขตที่ไม่ใช่คำ จุดยึดมีความกว้างเป็นศูนย์ โดยจะทดสอบตำแหน่งโดยไม่ต้องใช้อักขระ

  4. กลุ่มและการสลับ

    (abc) เป็นกลุ่มการจับ; ใช้ $1, $2 ในการทดแทน (?:abc) เป็นกลุ่มที่ไม่ได้จับภาพ (?=abc) เป็น lookahead (ยืนยันสิ่งต่อไปนี้) (?!abc) เป็นการมองไปข้างหน้าเชิงลบ (?<=abc) เป็นการมองข้างหลัง (ES2018+) a|b เป็นการสลับ (a หรือ b)

  5. แฟล็ก—เปลี่ยนพฤติกรรมการจับคู่

    g = global (ค้นหารายการที่ตรงกันทั้งหมด ไม่ใช่แค่รายการแรก) i = ไม่คำนึงถึงขนาดตัวพิมพ์ m = multiline (^ และ $ จับคู่ขอบเขตบรรทัด) s = dotAll (. ตรงกับบรรทัดใหม่) u = unicode (ถือว่ารูปแบบเป็นจุดโค้ด Unicode จำเป็นสำหรับอักขระอิโมจิและดวงดาว) y = Sticky (จับคู่ที่ LastIndex เท่านั้น)

ตัวอย่าง

จับคู่ที่อยู่อีเมล (ในทางปฏิบัติ RFC 5322 แบบง่าย)

ป้อนข้อมูล: Pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/

เอาท์พุต: จับคู่ 'user@example.com' และ 'a.b@sub.domain.co' แต่ไม่ตรงกับ 'plainaddress' หรือ '@no-user.com'

แยกรหัสสีฐานสิบหกทั้งหมดจาก CSS

ป้อนข้อมูล: Pattern: /#[0-9a-fA-F]{3,8}\b/g

เอาท์พุต: In 'color: #fff; background: #1a2b3c4d' finds ['#fff', '#1a2b3c4d']

ตรวจสอบวันที่ ISO 8601 (ปปปป-ดด-วว)

ป้อนข้อมูล: Pattern: /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/

เอาท์พุต: ตรงกับ '2026-08-28' แต่ปฏิเสธ '2026-13-01' และ '2026-02-31'

แทนที่ตัวเลขด้วย # โดยใช้กลุ่มการจับ

ป้อนข้อมูล: 'คำสั่งซื้อ 42 จัดส่งแล้ว' แทนที่ด้วย /(\d+)/g →'#$1'

เอาท์พุต: 'คำสั่งซื้อ #42 จัดส่งแล้ว'

ปัญหาทั่วไป

  • ตัวระบุปริมาณที่โลภจับคู่มากเกินไป: '<.*>' บน '<a><b>' จับคู่สตริงทั้งหมด '<a><b>' แทนที่จะเป็น '<a>' ใช้ '<.*?>' (lazy) เพื่อจับคู่ '<a>' ก่อน
  • การย้อนรอยหายนะ: ปริมาณที่ซ้อนกันเช่น (a+)+b บนอินพุต 'aaaaaaaaaaaaaaaaaa!' สามารถใช้เวลาเอ็กซ์โปเนนเชียลได้ เขียนรูปแบบใหม่หรือใช้กลุ่มอะตอมมิก / ปริมาณเชิงครอบครองหากรองรับ
  • ลืมค่าสถานะ u สำหรับ Unicode: /^.$/ ตรงกับหน่วยโค้ดเดียว ดังนั้นอีโมจิเช่น '😀' (สองหน่วยโค้ด) จะล้มเหลวหากไม่มีค่าสถานะ u เพิ่มคุณเสมอเมื่อจับคู่ตัวละครดวงดาว
  • ทำให้ \b (ขอบเขตคำ) สับสนกับ \s (ช่องว่าง): \b จับคู่ระหว่างคำและอักขระที่ไม่ใช่คำ ดังนั้นจึงใช้งานได้ที่จุดเริ่มต้น/จุดสิ้นสุดของสตริงด้วย \s จับคู่เฉพาะอักขระช่องว่างจริงเท่านั้น

เคล็ดลับ

  • ทดสอบ regex กับตัวอย่างทั้งที่ตรงกันและไม่ตรงกันในเครื่องทดสอบ Regex ของเราก่อนที่จะฝังลงในโค้ดที่ใช้งานจริงเสมอ เพราะกรณี Edge มักจะพลาดได้ง่าย
  • ชอบคลาสอักขระ [a-z] มากกว่าการสลับ (a|b|...|z) สำหรับอักขระเดี่ยว — คลาสจะเร็วกว่าและชัดเจนกว่า
  • ใช้กลุ่มที่ไม่จับภาพ (?:...) เมื่อคุณไม่ต้องการค่าที่บันทึก การจับภาพมีค่าใช้จ่ายด้านประสิทธิภาพเพียงเล็กน้อย และทำให้อาร์เรย์ผลลัพธ์เกะกะ
  • คอมไพล์ regex หนึ่งครั้งด้วย RegExp() ใหม่หรือลิเทอรัลที่ขอบเขตโมดูล ไม่ใช่ภายใน hot loop การคอมไพล์รูปแบบเดียวกันใหม่ในทุก ๆ การวนซ้ำจะทำให้ CPU สิ้นเปลือง

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

คำแนะนำที่เกี่ยวข้อง

อ้างอิง