กลุ่มตัวอักษรใน Regular Expressions JavaScript
มีคำสั่งพิเศษที่ช่วยให้คุณเลือกกลุ่มตัวอักษรทั้งหมดได้ในทีเดียว คำสั่ง
\d หมายถึง ตัวเลขตั้งแต่ 0 ถึง 9
คำสั่ง \w หมายถึง ตัวเลข ตัวอักษรละติน
หรือเครื่องหมายขีดล่าง คำสั่ง \s
หมายถึงช่องว่างหรืออักขระเว้นวรรค:
ช่องว่าง การขึ้นบรรทัดใหม่ การแท็บ คุณสามารถ
กลับค่าของคำสั่งได้โดยการเขียนตัวอักษรพิมพ์ใหญ่:
ตัวอย่างเช่น ถ้า \d คือตัวเลข,
ดังนั้น \D คือ ไม่ใช่ตัวเลข
ตัวอย่าง
มาหาตัวเลขทั้งหมด:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'! !! !!!'
ตัวอย่าง
โอเปอเรเตอร์การทำซ้ำจะนับคำสั่งกลุ่ม
เป็นหน่วยเดียวกัน หมายถึงไม่จำเป็นต้องมีวงเล็บจัดกลุ่ม
ในตัวอย่างต่อไปนี้ รูปแบบการค้นหา
จะเป็นดังนี้: ตัวเลขตั้งแต่ 0 ถึง 9
หนึ่งครั้งหรือมากกว่า:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'! ! ! abc @@@'
ตัวอย่าง
ในตัวอย่างต่อไปนี้ รูปแบบการค้นหาจะเป็น
ดังนี้: อะไรก็ได้หนึ่งครั้งหรือมากกว่า,
แต่ไม่ใช่ตัวเลขตั้งแต่ 0 ถึง 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'123!3!'
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาจะเป็นดังนี้: อักขระเว้นวรรคหนึ่งครั้ง:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'1!12!123!abc!@@@'
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาจะเป็นดังนี้:
อักขระที่ไม่ใช่เว้นวรรค หนึ่งครั้งหรือมากกว่า
สตริงย่อยทั้งหมดที่คั่นด้วยช่องว่าง จะถูกแทนที่
ด้วย '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'! ! ! ! !'
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาจะเป็นดังนี้:
ตัวเลขหรือตัวอักษร หนึ่งครั้งหรือมากกว่า
สตริงย่อยทั้งหมดที่ประกอบด้วยตัวเลขและตัวอักษร
จะถูกแทนที่ด้วย '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'! ! ! ! @@@'
ตัวอย่าง
ในตัวอย่างนี้ รูปแบบการค้นหาจะเป็นดังนี้:
ไม่ใช่ตัวเลข และไม่ใช่ตัวอักษร หนึ่งครั้งหรือมากกว่า
คำจำกัดความนี้ในกรณีของเราจะตรงกับ
'@@@' และช่องว่างทั้งหมด (เพราะพวกมันก็
ไม่ใช่ตัวเลขและไม่ใช่ตัวอักษร) โปรดสังเกต
ว่าในตอนท้ายมี '!' หนึ่งตัว - มันถูกแปลงมาจาก
สตริง ' @@@' - โดยมี
ช่องว่างนำหน้า:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'1!12!123!Abc!'
โจทย์ฝึกปฏิบัติ
กำหนดสตริง:
let str = 'a1a a2a a3a a4a a5a aba aca';
เขียน regular expression ที่จะค้นหาสตริง,
ที่ซึ่ง ด้านข้างเป็นตัวอักษร 'a',
และระหว่างพวกมันคือตัวเลขหนึ่งตัว
กำหนดสตริง:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
เขียน regular expression ที่จะค้นหาสตริง,
ที่ซึ่ง ด้านข้างเป็นตัวอักษร 'a',
และระหว่างพวกมันคือตัวเลขจำนวนเท่าใดก็ได้
กำหนดสตริง:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
เขียน regular expression ที่จะค้นหาสตริง,
ที่ซึ่ง ด้านข้างเป็นตัวอักษร 'a',
และระหว่างพวกมันคือตัวเลขจำนวนเท่าใดก็ได้ (รวมถึง
ศูนย์ตัวเลข นั่นคือสตริง 'aa')
กำหนดสตริง:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
เขียน regular expression ที่จะค้นหาสตริง
ในรูปแบบต่อไปนี้: ด้านข้างเป็นตัวอักษร
'a' และ 'b' และระหว่างพวกมัน - ไม่ใช่
ตัวเลขและไม่ใช่ช่องว่าง
กำหนดสตริง:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
เขียน regular expression ที่จะค้นหาสตริง
ในรูปแบบต่อไปนี้: ด้านข้างเป็นตัวอักษร
'a' และ 'b' และระหว่างพวกมัน - ไม่ใช่
ตัวอักษร ไม่ใช่ตัวเลข และไม่ใช่ช่องว่าง
กำหนดสตริง:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
เขียน regular expression ที่จะแทนที่ช่องว่างทั้งหมด
ด้วย '!'