บราเดอร์ฉันเพิ่งเรียนรู้ JavaScript และเห็นว่าจุดความรู้นั้นยุ่งเหยิงเล็กน้อยเมื่อฉันเรียนรู้การแสดงออกอย่างสม่ำเสมอดังนั้นฉันจึงเขียนบล็อกเพื่อสรุป
คำนิยาม
มีสองวิธีในการกำหนด Reg Exp ใน JavaScript:
1) ใช้ exp ใหม่: var exp1 = exp ใหม่ ("abc");
2) วางรูปแบบโดยตรงระหว่างสอง //: var exp2 = /abc /; //บันทึก. - ไม่มีคำพูดสองเท่าถ้าคุณเพิ่มมันจะกลายเป็นสตริง
อักขระพิเศษ
สายตาอักขระพิเศษเหมือนกับ Perl - เพียงแค่ใช้โดยตรง
/d อักขระหลัก
/w ตัวอักษรตัวอักษรและตัวเลข ("อักขระคำ")
อักขระ Whitespace (Space, Tab, Newline และคล้ายกัน)
/d อักขระที่ไม่ใช่ตัวเลข
/w อักขระที่ไม่ใช่ตัวอักษรคร่ำครึ
/s อักขระที่ไม่ใช่ Whitespace
- ระยะเวลาตรงกับอักขระทั้งหมดยกเว้น newLines
มีวิธีที่ง่ายมากที่จะจดจำ:
d = ตัวเลขดังนั้นจึงเป็นตัวเลข
w = คำดังนั้นจึงเป็นตัวอักษร
s = พื้นที่ดังนั้นจึงเป็นพื้นที่
การพิมพ์ดีดทั้งหมดเป็นแบบผกผัน -
วงเล็บ []
ใส่รูปแบบในวงเล็บหมายความว่าตราบใดที่ตัวละครใดจับคู่กันก็เป็นเรื่องจริง (เหมือนกับ Java หรือ Perl)
ตัวอย่างเช่น
การคัดลอกรหัสมีดังนี้:
console.log (/[01]/. ทดสอบ ("023424")); // จริง
console.log (/[01]/. ทดสอบ ("13424")); // จริง
console.log (/[01]/. ทดสอบ ("23424")); // เท็จ
วงเล็บ ()
หมายความว่าทุกอย่างในวงเล็บจะต้องเป็นจริง
ตัวอย่างเช่น
การคัดลอกรหัสมีดังนี้:
console.log (/[01]/. ทดสอบ ("013424")); // จริง
console.log (/[01]/. ทดสอบ ("13424")); // เท็จ
console.log (/[01]/. ทดสอบ ("230424")); // เท็จ
console.log (/[01]/. ทดสอบ ("230142401")); // จริง
เครื่องวัดปริมาณ
มันเหมือนกับ Java - ตารางนี้ดีมาก - ฉันชอบใช้มันมาตลอด
| โลภ | ไม่เต็มใจ | เป็นเจ้าของ | ความหมาย |
|---|---|---|---|
| x? | x ?? | x?+ | x, ครั้งเดียวหรือไม่เลย |
| x* | x*? | x*+ | x, ศูนย์หรือมากกว่าครั้ง |
| x+ | x+? | x ++ | x หนึ่งครั้งขึ้นไป |
| x {n} | x {n}? | x {n}+ | x, n ครั้งแน่นอน |
| x {n,} | x {n,}? | x {n,}+ | x อย่างน้อย n ครั้ง |
| x {n, m} | x {n, m}? | x {n, m}+ | x อย่างน้อย n แต่ไม่เกิน m ครั้ง |
ฟังก์ชั่นวัตถุนิพจน์
1) การทดสอบนั้นง่ายมาก เพียงแค่ใส่สตริงเพื่อทดสอบในการทดสอบ (... ) และฟังก์ชั่นนี้จะส่งคืนจริง/เท็จซึ่งแสดงถึงการจับคู่/unmatch
2) EXEC ฟังก์ชั่นนี้จะส่งคืนค่า null หากไม่พบสตริงการจับคู่ หากพบอาร์เรย์จะถูกส่งคืน สิ่งนี้มีสตริงของการแข่งขันตามลำดับ
3) String.replace (Expression1, String1) ฟังก์ชั่นนี้แทนที่ส่วนการจับคู่ในนิพจน์ด้วย String1 ใน String1 คุณสามารถใช้กลุ่มวงเล็บในนิพจน์ก่อนหน้า
เพื่อแทนที่ส่วนหนึ่งของมัน ตัวอย่างเช่น "co-ol". retplace (/[/w] +/- [/w]+/, "$ 2- $ 1"); // "OL-CO" สามารถใช้จนถึง $ 9
4) String.retplace (Expression, Function) นี่เป็นเวอร์ชันที่ได้รับการปรับปรุงและมีประสิทธิภาพมาก คุณสามารถกำหนดผลลัพธ์ใด ๆ ที่คุณต้องการผ่านฟังก์ชั่น การใช้งานเฉพาะไม่ได้ระบุไว้ที่นี่โปรดดูที่
คลิกเพื่อเปิดลิงค์
สร้างนิพจน์ reg แบบไดนามิก
วิธีนี้สามารถนำไปใช้เมื่อคุณต้องการใช้บางสิ่งบางอย่างใน Reg Exp เท่านั้นรู้เกี่ยวกับรันไทม์
ในการสร้าง Reg Exp คุณจะต้องใช้สตริงเพื่อสร้างรูปลักษณ์ของ Reg Exp จากนั้นใช้ตัวสร้างของ Exp (กล่าวถึงในตอนต้นของบทความ)
ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
ชื่อ var = "เรียน"
"โอ้ที่รัก". แทนที่ (exp ใหม่ (ชื่อ), "พระเจ้า"); // โอ้พระเจ้าของฉัน
อย่างไรก็ตามหากมีอักขระพิเศษในชื่ออาจใช้ในนิพจน์ทั่วไปและวิธีการข้างต้นมักจะทำให้เกิดข้อผิดพลาด
ดังนั้นในกรณีนั้นเราสามารถนำหน้าอักขระแต่ละตัวของสตริงอินพุตด้วย backslash เช่น:
การคัดลอกรหัสมีดังนี้:
ชื่อ var = df [] vxv;
var expname = name.replace ("/[^/w/s]/g", "// $ &");
"ชื่อของฉันคือ df [] vxv" .replace (exp ใหม่ (ชื่อ), "bob"); // ฉันชื่อบ๊อบ