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

Regular Expression คืออะไร? คำอธิบายฉบับสมบูรณ์

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

ตอบด่วน

Regular expression คือรูปแบบที่อธิบายเซตของสตริง ใช้ literal character และ metacharacter (*, +, ?, ., ^, $, [], (), {}, |, \) ความหมายพิเศษ regex ใช้ validate search extract และ replace ใช้ Regex Tester ฟรีของเรา

การแนะนำ

Regular expression (regex หรือ regexp) คือลำดับอักขระที่กำหนดรูปแบบ search ใช้โดย algorithm string-searching เพื่อหา match หรือ replace ข้อความ regex มีต้นกำเนิดใน formal language theory ทศวรรษ 1950 (Stephen Kleene) และใช้ใน Unix text tool (grep, sed, awk) ทศวรรษ 1970 ปัจจุบัน regex มีในทุกภาษาและ editor

ทีละขั้นตอน

  1. ทำความเข้าใจเกี่ยวกับตัวอักษรและอักขระเมตา

    อักขระตัวอักษร (a, b, 1, @) ตรงกัน MetaCharacter มีความหมายพิเศษ: . ตรงกับอักขระใดๆ * หมายถึงศูนย์หรือมากกว่า + หมายถึงหนึ่งตัวขึ้นไป ? หมายถึงศูนย์หรือหนึ่ง ^ การแข่งขันเริ่มต้น การแข่งขัน $ สิ้นสุด

  2. เรียนรู้คลาสตัวละคร

    วงเล็บเหลี่ยม [] กำหนดคลาสอักขระ — [aeiou] จับคู่สระใดๆ, [0-9] จับคู่ตัวเลขใดๆ ก็ตาม [^0-9] จับคู่ใดๆ ที่ไม่ใช่ตัวเลข คลาสชวเลข: \d (หลัก), \w (อักขระคำ), \s (ช่องว่าง) และการปฏิเสธตัวพิมพ์ใหญ่

  3. ใช้ปริมาณ

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

  4. จัดกลุ่มและยึดเหนี่ยว

    วงเล็บ () สร้างกลุ่มการจับภาพ การสลับ | ตรงกับด้านใดด้านหนึ่ง (แมว|สุนัข) Anchors ^ และ $ จับคู่จุดเริ่มต้นและจุดสิ้นสุดของสตริง ใช้สิ่งเหล่านี้เพื่อสร้างรูปแบบที่ซับซ้อนจากรูปแบบที่เรียบง่ายกว่า

ตัวอย่าง

จับคู่รูปแบบคล้ายอีเมล

ป้อนข้อมูล: Pattern: [a-z]+@[a-z]+\.[a-z]+

เอาท์พุต: การแข่งขัน: alice@example.com, bob@test.org

จับคู่รูปแบบหมายเลขโทรศัพท์

ป้อนข้อมูล: Pattern: \d{3}-\d{3}-\d{4}

เอาท์พุต: Matches: 555-123-4567

แยกคู่คีย์-ค่า

ป้อนข้อมูล: Pattern: (\w+)=(\w+)

เอาท์พุต: Matches 'key=value' with group 1 as key, group 2 as value

ปัญหาทั่วไป

  • การจับคู่แบบโลภสิ้นเปลือง —.* จับคู่ให้มากที่สุด ใช้ .*? เพื่อการจับคู่แบบขี้เกียจเพื่อค้นหาการจับคู่ที่สั้นที่สุด
  • การลืมที่จะหลีกอักขระพิเศษ —., *, +, ? ฯลฯ ถือเป็นอักขระพิเศษ ใช้ \ เพื่อจับคู่ตามตัวอักษร (เช่น \. จับคู่จุดตามตัวอักษร)
  • การย้อนรอยหายนะ —รูปแบบที่มีตัวระบุเชิงซ้อน (เช่น (a+)+) อาจใช้เวลาแบบเอ็กซ์โปเนนเชียลในอินพุตบางตัว ทำให้เกิดการโจมตี ReDoS
  • การจับคู่ที่มากเกินไป - ไม่มีจุดยึด (^ และ $) รูปแบบจะเข้ากันทุกที่ ใช้ ^...$ เพื่อจับคู่สตริงทั้งหมด

เคล็ดลับ

  • เริ่มต้นแบบเรียบง่ายและเพิ่มความซับซ้อนทีละน้อย การดีบัก regex ที่ซับซ้อนทั้งหมดในคราวเดียวนั้นยากมาก
  • ใช้เครื่องมือทดสอบ regex เพื่อทดสอบรูปแบบกับข้อความตัวอย่าง ดูการจับคู่ที่ไฮไลต์แบบเรียลไทม์
  • แสดงความคิดเห็น regexes ที่ซับซ้อนโดยใช้โหมดขยาย (/x flag ในเอ็นจิ้นบางตัว) หรือแยกออกเป็นส่วนที่มีชื่อ
  • ใช้ Regex Tester ของเราเพื่อทดสอบรูปแบบทันทีในเบราว์เซอร์ของคุณ ไม่ต้องสมัคร เป็นส่วนตัวโดยสมบูรณ์

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

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

อ้างอิง