เครื่องหมายปีกกาในนิพจน์ทั่วไปของ JavaScript
โอเปอเรเตอร์ '+', '*', '?'
เป็นสิ่งที่ดี อย่างไรก็ตาม มันไม่สามารถระบุ
จำนวนการซ้ำที่แน่นอนได้ ในกรณีนี้
โอเปอเรเตอร์ {} จะมาช่วยคุณ
มันทำงานดังนี้: {5}
- ซ้ำ 5 ครั้ง, {2,5} – ซ้ำ
ตั้งแต่ 2 ถึง 5 ครั้ง (รวมทั้งสองค่า), {2,}
- ซ้ำ 2 ครั้งขึ้นไป โปรดทราบ
ว่าไม่มีรูปแบบนี้ - {,2}
- ดูตัวอย่าง:
ตัวอย่าง
ในตัวอย่างนี้รูปแบบการค้นหาดูเหมือนว่า:
ตัวอักษร 'x', ตัวอักษร 'a' หนึ่ง
หรือสองครั้ง, ตัวอักษร 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'xx ! ! xaaax'
ตัวอย่าง
ในตัวอย่างนี้รูปแบบการค้นหาดูเหมือนว่า:
ตัวอักษร 'x', ตัวอักษร 'a' สอง
ครั้งขึ้นไป, ตัวอักษร 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'xx xax ! !'
ตัวอย่าง
ในตัวอย่างนี้รูปแบบการค้นหาดูเหมือนว่า:
ตัวอักษร 'x', ตัวอักษร 'a' สาม
ครั้ง, ตัวอักษร 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'xx xax xaax !'
ตัวอย่าง
ในตัวอย่างนี้รูปแบบการค้นหาดูเหมือนว่า:
ตัวอักษร 'a' สิบครั้ง:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'aaa ! aaa'
ตัวอย่าง
ในตัวอย่างนี้ผู้เขียนโค้ดต้องการรูปแบบนี้:
ตัวอักษร 'x', ตัวอักษร 'a' สาม
ครั้งหรือน้อยกว่า, ตัวอักษร 'x',
แต่ที่น่าเสียดายคือ - {,3} - ไม่ทำงาน
จำเป็นต้องระบุอย่างชัดเจน:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'xx ! ! !'
ตัวอย่าง
ศูนย์ก็อนุญาตให้ใช้ได้:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
ผลลัพธ์ที่เขียนลงในตัวแปรจะเป็นดังนี้:
'! ! ! !'
โจทย์ฝึกปฏิบัติ
กำหนดสตริง:
let str = 'aa aba abba abbba abbbba abbbbba';
เขียนนิพจน์ทั่วไปที่พบสตริง
'abba', 'abbba', 'abbbba'
และเพียงเท่านั้น
กำหนดสตริง:
let str = 'aa aba abba abbba abbbba abbbbba';
เขียนนิพจน์ทั่วไปที่พบสตริง
รูปแบบ 'aba', โดยที่ 'b' พบ
น้อยกว่า 3 ครั้ง (รวม)
กำหนดสตริง:
let str = 'aa aba abba abbba abbbba abbbbba';
เขียนนิพจน์ทั่วไปที่พบสตริง
รูปแบบ 'aba', โดยที่ 'b' พบ
มากกว่า 4 ครั้ง (รวม)