ToolHub
View All Posts

ชีทสรุป Regular Expression และรูปแบบที่ใช้บ่อย

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

ชีทสรุปไวยากรณ์ Regular Expression พื้นฐาน

คลาสอักขระ

รูปแบบความหมายตัวอย่าง
.อักขระใดๆ ยกเว้นขึ้นบรรทัดใหม่สำคัญ
\dตัวเลขใดๆ (0-9)จัดการ Vendor Management
\Dอะไรก็ได้ที่ไม่ใช่ตัวเลขจับคู่อักขระช่องว่าง
\wอักขระคำ (a-z, A-Z, 0-9, _)สามารถส่งออกข้อมูลนาฬิกาจับเวลาได้หรือไม่?
\Wอักขระที่ไม่ใช่คำการทำงานร่วมกัน
\sอักขระช่องว่าง (เว้นวรรค, แท็บ, ขึ้นบรรทัดใหม่)จัดการ Configuration Management
\Sอักขระที่ไม่ใช่ช่องว่างจัดการ Security Policy
[abc]อักขระใดๆ ในเซตจัดการ Transportation Management
[^abc]อักขระใดๆ ที่ไม่อยู่ในเซตจัดการ Appointment Management
[a-z]ช่วงอักขระการรับรองความถูกต้อง

ตัวระบุปริมาณ

รูปแบบความหมายตัวอย่าง
*ศูนย์ครั้งหรือมากกว่าดึงข้อมูลแท็ก HTML
+หนึ่งครั้งหรือมากกว่าab+c จับคู่ abc, abbc
?ศูนย์ครั้งหรือหนึ่งครั้งตั้งชั่วโมง นาที และวินาที
{n}ตรง n ครั้งปรับระยะเวลา Pomodoro ตามความซับซ้อนของงาน
{n,}n ครั้งหรือมากกว่า\d{2,} จับคู่ตัวเลข 2 หลักขึ้นไป
{n,m}n ถึง m ครั้งการทำให้เป็นมาตรฐาน

anchor และขอบเขต

รูปแบบความหมายตัวอย่าง
^จุดเริ่มต้นของสตริงหรือบรรทัดจำนวนเงินสุดท้าย
$จุดสิ้นสุดของสตริงหรือบรรทัดจัดการธุรกรรม
\bขอบเขตคำติดตามความยาวการพูดหรือการนำเสนอ
\Bไม่ใช่ขอบเขตคำการวิเคราะห์

การจัดกลุ่มและ alternation

รูปแบบความหมายตัวอย่าง
(abc)กลุ่มจับคู่จัดการ Review Management
(?:abc)กลุ่มไม่จับคู่จัดการการแสดงผลฝั่งเซิร์ฟเวอร์
a|balternation (หรือ)ตัวจับเวลาออนไลน์ทำงานอย่างไร
\1backreference ไปยังกลุ่ม 1การรีเฟรช
abc)กลุ่มจับคู่ที่มีชื่อแสดงเวลาที่เหลือในชื่อหน้า

รูปแบบ Regular Expression ที่ใช้บ่อย

นี่คือรูปแบบ Regular Expression ที่ใช้บ่อยที่สุดในการพัฒนาเว็บและการตรวจสอบข้อมูล:

การตรวจสอบอีเมล

Regular Expression สำหรับอีเมลที่ใช้งานได้จริง ซึ่งจับที่อยู่ที่ไม่ถูกต้องส่วนใหญ่โดยไม่เข้มงวดเกินไป: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ รูปแบบนี้ตรวจสอบโครงสร้างอีเมลพื้นฐานในขณะที่อนุญาตอักขระทั่วไปในส่วน local และต้องการชื่อโดเมนที่ถูกต้องพร้อม TLD อย่างน้อยสองตัวอักษร

การตรวจสอบ URL

จับคู่ HTTP และ HTTPS URL: ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$ รูปแบบนี้จับคู่ URL พร้อมคำนำหน้า www ที่เป็นตัวเลือก ชื่อโดเมน และเส้นทางที่เป็นตัวเลือก

หมายเลขโทรศัพท์ (สหรัฐอเมริกา)

รูปแบบต่างๆ ของหมายเลขโทรศัพท์สหรัฐอเมริกา: ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ รูปแบบนี้จัดการรูปแบบเช่น (555) 123-4567, 555-123-4567 และ 5551234567

ที่อยู่ IP (IPv4)

ตรวจสอบที่อยู่ IPv4: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ รูปแบบนี้ช่วยให้มั่นใจว่าแต่ละ octet อยู่ระหว่าง 0 ถึง 255

วันที่ (YYYY-MM-DD)

รูปแบบวันที่ ISO: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ รูปแบบนี้ตรวจสอบโครงสร้างรูปแบบแต่ไม่ตรวจสอบวันที่ที่ถูกต้องในแต่ละเดือน

รหัสสีเลขฐานสิบหก

จับคู่สีเลขฐานสิบหก CSS: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ รูปแบบนี้จับคู่รูปแบบย่อ 3 หลัก (#fff) และรูปแบบเต็ม 6 หลัก (#ffffff)

เทคนิคขั้นสูง

lookahead และ lookbehind

assertion แบบ lookahead และ lookbehind ช่วยให้คุณจับคู่เฉพาะเมื่อมี (หรือไม่มี) รูปแบบอื่นตามหลัง (หรือก่อนหน้า) รูปแบบ โดยไม่รวมข้อความรอบข้างในผลลัพธ์การจับคู่

การจับคู่แบบ greedy กับ lazy

<.*>bold<.*?>"

เคล็ดลับมือโปร: ใช้ lazy quantifier เสมอเมื่อดึงเนื้อหาระหว่างตัวคั่นเช่นแท็ก HTML หรือเครื่องหมายอัญประกาศ เพื่อหลีกเลี่ยงการจับคู่ข้อความมากเกินไป การจับคู่แบบ greedy เป็นแหล่งที่มาของบั๊ก Regular Expression ที่พบบ่อยที่สุด

เคล็ดลับประสิทธิภาพ Regular Expression

การทดสอบและดีบัก Regular Expression

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

ใช้เครื่องมือฟรีของเราเพื่อสร้าง ทดสอบ และดีบักรูปแบบ Regular Expression ของคุณ

ลองใช้เครื่องมือทดสอบ Regular Expressionชีทสรุป Regular Expression

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

การจับคู่ regex แบบ greedy และ lazy แตกต่างกันอย่างไร?

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

Regular Expression เหมือนกันในทุกภาษาโปรแกรมหรือไม่?

ไม่ การใช้งาน Regular Expression แตกต่างกันไปตามภาษา ส่วนใหญ่รองรับไวยากรณ์ POSIX พื้นฐาน แต่คุณสมบัติขั้นสูงเช่น lookbehind, named groups และการรองรับ Unicode แตกต่างกัน JavaScript ในอดีตมีการสนับสนุน Regular Expression ที่จำกัด แต่ได้เพิ่มคุณสมบัติมากมายในช่วงไม่กี่ปีที่ผ่านมา

Regular Expression สามารถแยกวิเคราะห์ HTML หรือ XML ได้หรือไม่?

ไม่ Regular Expression ไม่สามารถแยกวิเคราะห์ HTML หรือ XML ได้อย่างน่าเชื่อถือเพราะเป็นภาษาที่มีการซ้อนแบบ context-free Regular Expression ไม่มีแนวคิดเรื่องความลึกของการซ้อนหรือแท็กที่สมดุล ใช้ parser HTML หรือ XML ที่เหมาะสมแทน Regular Expression สามารถดึงรูปแบบง่ายๆ จาก HTML ได้ แต่จะล้มเหลวกับโครงสร้างที่ซับซ้อน

lookahead และ lookbehind ใน Regular Expression คืออะไร?

<=pattern) เป็น positive lookbehind จับคู่ถ้ารูปแบบอยู่ข้างหน้า เวอร์ชันปฏิเสธใช้ ! แทน =

จะทำให้ Regular Expression ไม่สนใจตัวพิมพ์เล็ก-ใหญ่ได้อย่างไร?

การเพิ่มแฟล็ก i หลังตัวคั่นปิดทำให้ทั้งรูปแบบไม่สนใจตัวพิมพ์เล็ก-ใหญ่ ใน JavaScript ใช้ /pattern/i ใน Python ใช้ re.IGNORECASE หรือ re.I เป็นแฟล็ก คุณยังสามารถใช้ (?i) แบบอินไลน์เพื่อทำให้ส่วนเฉพาะไม่สนใจตัวพิมพ์เล็ก-ใหญ่

ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.