เหตุใด Regex จึงคุ้มค่าที่จะเรียนรู้

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

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

การอ้างอิงด่วนเกี่ยวกับรูปแบบที่จำเป็น

ลวดลายไม้ขีดตัวอย่าง
\dตัวเลขใดๆ 0–9\d{4} → 2025
\wตัวอักษร ตัวเลข หรือขีดล่าง\w+→ "สวัสดี_โลก"
\sช่องว่างใดๆ\s+→ ช่องว่างตั้งแต่หนึ่งช่องขึ้นไป
^ / $สตริงเริ่มต้น / สิ้นสุด^\d{5}$→ รหัสไปรษณีย์ 5 หลักพอดี
[เอบีซี]ใดๆ ของ: a, b หรือ c[อ้าว]→ สระใดก็ได้
[^เอบีซี]อะไรก็ได้ยกเว้น a, b, c[^\ง]→ ไม่ใช่ตัวเลข
?0 หรือ 1 ก่อนหน้าสี→ สี หรือ สี
+1 หรือมากกว่า\d+→ หนึ่งหรือหลายหลัก
*0 หรือมากกว่า\d*→ เลขศูนย์หรือมากกว่านั้น
{n,m}ระหว่าง n ถึง m ครั้ง\d{3,5}→ 3 ถึง 5 หลัก

รูปแบบที่ควรค่าแก่การบุ๊กมาร์ก

💡 เคล็ดลับสำหรับมือโปร:ใช้ตั้งค่าสถานะเพื่อค้นหาการแข่งขันทั้งหมด (ไม่ใช่แค่รายการแรก)ฉันสำหรับการจับคู่แบบคำนึงถึงขนาดตัวพิมพ์ และที่จะทำให้^และ$จับคู่ขอบเขตบรรทัดแทนขอบเขตสตริง รูปแบบ regex ในโลกแห่งความเป็นจริงส่วนใหญ่ต้องมีอย่างน้อยหรือฉัน.
"การย้อนรอยหายนะ" คืออะไร?

รูปแบบเหมือน(ก+)+ใช้กับสตริงที่ไม่ตรงกันยาวๆ ทำให้เกิดเวลาประมวลผลแบบเอ็กซ์โพเนนเชียล — เอ็นจิ้น regex ของคุณติดขัดเมื่อพยายามผสมค่าผสมให้มากขึ้นแบบทวีคูณ หลีกเลี่ยงปริมาณที่ซ้อนกันบนรูปแบบที่ทับซ้อนกัน รูปแบบ(ก+)+ขที่ "aaaaaaaaaaaaaaaac" จะหยุดการทำงานของเซิร์ฟเวอร์

JavaScript regex ทำงานเหมือนกับ Python หรือไม่

ส่วนใหญ่ใช่ โดยมีความแตกต่างในกลุ่มที่มีชื่อ (JS ใช้(?<ชื่อ>), Python ใช้(?P<ชื่อ>)) ความสามารถ lookahead/lookbehind บางอย่าง และสัญลักษณ์คลาสอักขระ ผู้ทดสอบนี้ใช้เครื่องมือของ JavaScript — ทดสอบในภาษาเป้าหมายของคุณหากพฤติกรรมแตกต่างออกไป

พร้อมที่จะลองด้วยตัวเองแล้วหรือยัง?

เครื่องมือทดสอบ Regex คำแนะนำเพิ่มเติม