ES6 - RegExp
นิพจน์ทั่วไปคือวัตถุที่อธิบายถึงรูปแบบของอักขระ นิพจน์ทั่วไปมักย่อว่า“regex" หรือ "regexp”.
JavaScript RegExp คลาสแสดงถึงนิพจน์ทั่วไปและทั้ง String และ RegExp กำหนดวิธีการที่ใช้นิพจน์ทั่วไปเพื่อดำเนินการฟังก์ชันจับคู่รูปแบบและฟังก์ชันค้นหาและแทนที่ที่มีประสิทธิภาพบนข้อความ
นิพจน์ทั่วไปสามารถกำหนดเป็น -
var pattern = new RegExp(pattern, attributes);
OR
var pattern = /pattern/attributes;
แอตทริบิวต์สามารถมีค่าต่อไปนี้ผสมกันได้
ซีเนียร์ No | คุณสมบัติและคำอธิบาย |
---|---|
1 | G การแข่งขันระดับโลก |
2 | I ไม่สนใจกรณี |
3 | M มัลติไลน์; ถือว่าอักขระเริ่มต้นและสิ้นสุด (^ และ $) เป็นการทำงานในหลายบรรทัด (เช่นจับคู่จุดเริ่มต้นหรือจุดสิ้นสุดของแต่ละบรรทัด (คั่นด้วย \ n หรือ \ r) ไม่ใช่เฉพาะจุดเริ่มต้นหรือจุดสิ้นสุดของสตริงอินพุตทั้งหมด ) |
4 | U ยูนิโคด; ถือว่ารูปแบบเป็นลำดับของจุดรหัสยูนิโคด |
5 | Y เหนียว; จับคู่จากดัชนีที่ระบุโดยคุณสมบัติ lastIndex ของนิพจน์ทั่วไปนี้ในสตริงเป้าหมายเท่านั้น (และไม่พยายามจับคู่จากดัชนีใด ๆ ในภายหลัง) |
การสร้างนิพจน์ทั่วไป
วงเล็บ
วงเล็บ ([]) มีความหมายพิเศษเมื่อใช้ในบริบทของนิพจน์ทั่วไป ใช้เพื่อค้นหาช่วงของอักขระ
ซีเนียร์ No | นิพจน์และคำอธิบาย |
---|---|
1 | [...] อักขระใดตัวหนึ่งระหว่างวงเล็บ |
2 | [^...] อักขระใดตัวหนึ่งที่ไม่อยู่ระหว่างวงเล็บ |
3 | [0-9] ตรงกับตัวเลขทศนิยมใด ๆ ตั้งแต่ 0 ถึง 9 |
4 | [a-z] จับคู่อักขระใดก็ได้จากตัวพิมพ์เล็ก a ผ่านตัวพิมพ์เล็ก z |
5 | [A-Z] ตรงกับอักขระใด ๆ จากตัวพิมพ์ใหญ่ A ผ่านตัวพิมพ์ใหญ่ Z |
6 | [a-Z] จับคู่อักขระใดก็ได้จากตัวพิมพ์เล็ก a ผ่านตัวพิมพ์ใหญ่ Z |
ช่วงที่แสดงด้านบนเป็นช่วงทั่วไป คุณยังสามารถใช้ช่วง [0-3] เพื่อจับคู่เลขฐานสิบตั้งแต่ 0 ถึง 3 หรือช่วง [bv] เพื่อจับคู่อักขระตัวพิมพ์เล็กตั้งแต่ b ถึง v
Quantifiers
ความถี่หรือตำแหน่งของลำดับอักขระในวงเล็บและอักขระเดี่ยวสามารถแสดงด้วยอักขระพิเศษ อักขระพิเศษแต่ละตัวมีความหมายแฝงเฉพาะ +, *, ?, และ $ แฟล็กทั้งหมดเป็นไปตามลำดับอักขระ
ซีเนียร์ No | นิพจน์และคำอธิบาย |
---|---|
1 | p+ ตรงกับสตริงที่มีอย่างน้อยหนึ่ง p. |
2 | p* ตรงกับสตริงใด ๆ ที่มีศูนย์หรือมากกว่า p's |
3 | p? ตรงกับสตริงที่มีตั้งแต่หนึ่งตัวขึ้นไป p's |
4 | p{N} ตรงกับสตริงที่มีลำดับของ N p's |
5 | p{2,3} ตรงกับสตริงใด ๆ ที่มีลำดับสองหรือสาม p's |
6 | p{2, } ตรงกับสตริงใด ๆ ที่มีลำดับอย่างน้อยสอง p's |
7 | p$ ตรงกับสตริงใด ๆ กับ p ในตอนท้ายของมัน |
8 | ^p ตรงกับสตริงใด ๆ กับ p ที่จุดเริ่มต้นของมัน |
9 | [^a-zA-Z] ตรงกับสตริงที่ไม่มีอักขระใด ๆ ตั้งแต่ a ผ่าน z และ A ผ่าน Z |
10 | p.p ตรงกับสตริงที่มี pตามด้วยอักขระใด ๆ แล้วตามด้วยตัวอื่น p |
11 | ^.{2}$ ตรงกับสตริงที่มีอักขระสองตัว |
12 | <b>(.*)</b> ตรงกับสตริงใด ๆ ที่อยู่ภายใน <b> และ </b> |
13 | p(hp)* ตรงกับสตริงใด ๆ ที่มี p ตามด้วยศูนย์หรือมากกว่าของลำดับ hp |
อักขระตามตัวอักษร
ซีเนียร์ No | ตัวละครและคำอธิบาย |
---|---|
1 | Alphanumeric ตัวเอง |
2 | \0 อักขระ NULL (\ u0000) |
3 | \t แท็บ (\ u0009) |
4 | \n ขึ้นบรรทัดใหม่ (\ u000A) |
5 | \v แท็บแนวตั้ง (\ u000B) |
6 | \f ฟีดแบบฟอร์ม (\ u000C) |
7 | \r การคืนรถ (\ u000D) |
8 | \xnn อักขระละตินที่ระบุโดยเลขฐานสิบหก nn; ตัวอย่างเช่น \ x0A เหมือนกับ \n |
9 | \uxxxx อักขระ Unicode ที่ระบุโดยเลขฐานสิบหก xxxx; ตัวอย่างเช่น \ u0009 เหมือนกับ\t |
10 | \cX อักขระควบคุม ^ X; ตัวอย่างเช่น \ cJ เทียบเท่ากับอักขระขึ้นบรรทัดใหม่\n |
อักขระเมตา
ก meta-character เป็นเพียงอักขระตามตัวอักษรที่นำหน้าด้วยแบ็กสแลชซึ่งทำหน้าที่ให้ความหมายพิเศษรวมกัน
ตัวอย่างเช่นคุณสามารถค้นหาเงินจำนวนมากโดยใช้ไฟล์ '\d'เมตาอักขระ: / ([\ d] +) 000 /. ที่นี่\d จะค้นหาสตริงของอักขระตัวเลข
ตารางต่อไปนี้แสดงชุดของอักขระเมตาซึ่งสามารถใช้ได้ใน PERL Style Regular Expressions
ซีเนียร์ No | ตัวละครและคำอธิบาย |
---|---|
1 | . อักขระเดี่ยว |
2 | \s อักขระเว้นวรรค (ช่องว่างแท็บขึ้นบรรทัดใหม่) |
3 | \S อักขระที่ไม่ใช่ช่องว่าง |
4 | \d ตัวเลข (0-9) |
5 | \D ไม่ใช่ตัวเลข |
6 | \w อักขระคำ (az, AZ, 0-9, _) |
7 | \W อักขระที่ไม่ใช่คำ |
8 | [\b] backspace ตามตัวอักษร (กรณีพิเศษ) |
9 | [aeiou] จับคู่อักขระเดี่ยวในชุดที่กำหนด |
10 | [^aeiou] จับคู่อักขระเดี่ยวนอกชุดที่กำหนด |
11 | (foo|bar|baz) ตรงกับทางเลือกใด ๆ ที่ระบุ |
คุณสมบัติ RegExp
ซีเนียร์ No | คุณสมบัติและคำอธิบาย |
---|---|
1 | RegExp.prototype.flags สตริงที่มีแฟล็กของอ็อบเจ็กต์ RegExp |
2 | RegExp.prototype.global ไม่ว่าจะทดสอบนิพจน์ทั่วไปกับการจับคู่ที่เป็นไปได้ทั้งหมดในสตริงหรือเฉพาะกับนิพจน์แรก |
3 | RegExp.prototype.ignoreCase ไม่ว่าจะละเว้นตัวพิมพ์เล็กและใหญ่ในขณะที่พยายามจับคู่ในสตริง |
4 | RegExp.prototype.lastIndex ไม่ว่าจะเป็นคุณสมบัติอ่าน / เขียนของอ็อบเจ็กต์ RegExp |
5 | RegExp.prototype.multiline จะค้นหาในสตริงในหลายบรรทัดหรือไม่ |
6 | RegExp.prototype.source ข้อความของรูปแบบ |
วิธี RegExp
ซีเนียร์ No | วิธีการและคำอธิบาย |
---|---|
1 | RegExp.prototype.exec () ดำเนินการค้นหารายการที่ตรงกันในพารามิเตอร์สตริง |
2 | RegExp.prototype.test () ทดสอบการจับคู่ในพารามิเตอร์สตริง |
3 | RegExp.prototype.match () ทำการจับคู่กับสตริงที่กำหนดและส่งคืนผลการแข่งขัน |
4 | RegExp.prototype.replace () แทนที่การจับคู่ในสตริงที่กำหนดด้วยสตริงย่อยใหม่ |
5 | RegExp.prototype.search () ค้นหาการจับคู่ในสตริงที่กำหนดและส่งกลับดัชนีตามรูปแบบที่พบในสตริง |
6 | RegExp.prototype.split () แยกสตริงที่กำหนดลงในอาร์เรย์โดยแยกสตริงออกเป็นสตริงย่อย |
7 | RegExp.prototype.toString () ส่งคืนสตริงที่แสดงถึงวัตถุที่ระบุ แทนที่เมธอด theObject.prototype.toString () |