แนะนำ Regular Expressions ใน JavaScript
Regular Expressions คือคำสั่ง สำหรับการค้นหาและแทนที่ที่ซับซ้อน (หรือแค่ การค้นหา) พวกมันอนุญาตให้ทำสิ่งที่น่าสนใจมาก ๆ ได้ แต่โชคไม่ดีที่ค่อนข้างยากที่จะเรียนรู้
มีหลายเมธอดของ JavaScript สำหรับ
การทำงานกับ Regular Expressions เราจะเริ่มต้น
ทำความรู้จักกับพวกมันโดยใช้ตัวอย่างของ replace
- คุณคุ้นเคยกับเมธอดนี้แล้ว: มันรับพารามิเตอร์แรก
ว่าให้แทนที่อะไร และพารามิเตอร์ที่สอง
- ให้แทนที่ด้วยอะไร และตัวเมธอดเองถูกนำไปใช้
กับสตริงที่ต้องการดำเนินการแทนที่:
'bab'.replace('a', '!'); // คืนค่า 'b!b'
คุณสามารถส่งผ่านพารามิเตอร์แรกของเมธอดนี้ได้
ไม่ใช่แค่สตริงธรรมดา แต่เป็น Regular Expression
Regular Expression ประกอบด้วยชุดของ
คำสั่ง ที่วางอยู่ภายในเครื่องหมายทับ / เครื่องหมายทับเหล่านี้
เรียกว่า delimiters ของ Regular Expressions
ตัว Regular Expressions เองประกอบด้วยสอง ประเภทของอักขระ: ประเภทที่แทนค่าตัวมันเอง และ ประเภทที่เป็นอักขระคำสั่ง ซึ่งเรียกว่า metacharacters
ตัวอักษรและตัวเลขแทนค่าตัวมันเอง ในตัวอย่างต่อไป
เราจะใช้ Regular Expression
แทนที่ตัวอักษร 'a' ด้วย !:
'bab'.replace(/a/, '!'); // คืนค่า 'b!b'
แต่จุด (.) เป็น metacharacter
และหมายถึง อักขระใดๆ ก็ได้ ในตัวอย่างต่อไป
เราจะค้นหาสตริงโดยใช้แพตเทิร์นนี้:
ตัวอักษร 'x', จากนั้นอักขระใดๆ ก็ได้, จากนั้น
ตัวอักษร 'x' อีกครั้ง:
'xax eee'.replace(/x.x/, '!'); // คืนค่า '! eee'
หลังจาก delimiters คุณสามารถเขียน modifiers
- คำสั่งที่เปลี่ยนแปลงคุณสมบัติทั่วไป
ของ Regular Expression ได้ ตัวอย่างเช่น modifier
g เปิดโหมดการค้นหาและแทนที่แบบทั่วโลก
- ถ้าไม่มีมัน Regular Expression จะค้นหาแค่
การจับคู่ครั้งแรกเท่านั้น แต่ถ้ามี - จะค้นหาทุกๆ การจับคู่
ในตัวอย่างต่อไปไม่ได้ระบุ modifier
g และ Regular Expression จะค้นหาแค่การจับคู่
แรกเท่านั้น:
'aab'.replace(/a/, '!'); // คืนค่า '!ab'
และตอนนี้ Regular Expression จะค้นหาการจับคู่ทั้งหมด:
'aab'.replace(/a/g, '!'); // คืนค่า '!!b'
กำหนดสตริง:
let str = 'ahb acb aeb aeeb adcb axeb';
เขียน Regular Expression ที่จะค้นหาสตริง
'ahb', 'acb', 'aeb'
ตามแพตเทิร์น: ตัวอักษร 'a', อักขระใดๆ ก็ได้,
ตัวอักษร 'b'
กำหนดสตริง:
let str = 'aba aca aea abba adca abea';
เขียน Regular Expression ที่จะค้นหาสตริง
'abba', 'adca', 'abea'
ตามแพตเทิร์น: ตัวอักษร 'a', 2
อักขระใดๆ ก็ได้, ตัวอักษร 'a'
กำหนดสตริง:
let str = 'aba aca aea abba adca abea';
เขียน Regular Expression ที่จะค้นหาสตริง
'abba' และ 'abea', โดยไม่จับ
'adca'