1. วิธีการกำหนดนิพจน์ทั่วไป
มีสองวิธีในการกำหนดนิพจน์ทั่วไป: คำจำกัดความของตัวสร้างและนิยามปริมาณการแสดงออกโดยตรงปกติ ตัวอย่างเช่น:
คัดลอกรหัสดังนี้: var reg1 = ใหม่ regexp ('/d {5, 11}');
var reg2 = // d {5, 12}/;
นิพจน์ปกติวัดอักขระโดยตรง
/o: อักขระ nul (/u0000)
/t: อักขระแท็บ (/u0009)
/n: อักขระใหม่ (/u000a)
/V: อักขระแท็บแนวตั้ง (/u000b)
/F: การเปลี่ยนหน้า (/u000c)
/r: ตัวละคร Return Carriage (/u000d)
/xnn: อักขระละตินที่ระบุโดยหมายเลขเลขฐานสิบหกตัวอย่างเช่น /x0a เทียบเท่ากับ /n
/uxxxx: อักขระ Unicode ที่ระบุโดยหมายเลข hexadecimal xxxx ตัวอย่างเช่น /U0009 เทียบเท่ากับ /t
/cx: ตัวควบคุมอักขระ ^x ตัวอย่างเช่น /cj เทียบเท่ากับการแบ่งบรรทัด /n
อักขระสมอนิพจน์ปกติ
^: จับคู่จุดเริ่มต้นของสตริงในการค้นหาหลายบรรทัดตรงกับจุดเริ่มต้นของบรรทัด
$: จับคู่จุดสิ้นสุดของสตริงในการค้นหาหลายบรรทัดตรงกับจุดสิ้นสุดของบรรทัด
/B: จับคู่ขอบเขตของคำสั้น ๆ
/B: จับคู่ตำแหน่งของขอบเขตที่ไม่ใช่คำ
(? = p): การยืนยันไปข้างหน้าแบบไม่มีความกว้างเป็นศูนย์เพื่อให้ตรงกับ P แต่ไม่ต้องรวมอักขระเหล่านั้นที่ตรงกับ P
(?! p): ทิศทางลบแบบไม่มีความกว้างเป็นศูนย์ยืนยันก่อนกำหนดให้สตริงถัดไปไม่ตรงกับ p
คลาสอักขระสำหรับการแสดงออกปกติ
[... ]: ตัวละครใด ๆ ในวงเล็บเหลี่ยม
[^... ]: ตัวละครใด ๆ ที่ไม่ได้อยู่ในวงเล็บเหลี่ยม
.: อักขระใด ๆ ยกเว้นตัวแบ่งบรรทัดและเครื่องขั้วต่อสาย Unicode อื่น ๆ
/W: คำใด ๆ ที่ประกอบด้วยอักขระ ASCII เทียบเท่ากับ [A-ZA-Z0-9]
/W: คำใด ๆ ที่ไม่ได้ประกอบด้วยอักขระ ASCII นั้นเทียบเท่ากับ [^A-ZA-Z0-9]
/s: ช่องว่าง Unicode ใด ๆ
/s: อักขระช่องว่างที่ไม่ใช่ Unicode ใด ๆ โปรดทราบว่า /w และ /s แตกต่างกัน
/D: หมายเลข ASCII ใด ๆ เทียบเท่ากับ [0-9]
/D: อักขระใด ๆ ยกเว้นหมายเลข ASCII เทียบเท่ากับ [^0-9]
[/b]: ปริมาณโดยตรง backspace (กรณีพิเศษ)
ทำซ้ำอักขระไวยากรณ์สำหรับการแสดงออกปกติ
{n, m}: จับคู่รายการก่อนหน้าอย่างน้อย n ครั้ง แต่ไม่เกิน m ครั้ง
{n,}: จับคู่รายการก่อนหน้า n ครั้งหรือมากกว่า
{n}: จับคู่รายการก่อนหน้า n ครั้ง
?: จับคู่รายการก่อนหน้า 0 หรือ 1 เวลานั่นคือรายการก่อนหน้านี้เป็นตัวเลือกเทียบเท่ากับ {0, 1}
+: จับคู่รายการก่อนหน้า 1 ครั้งขึ้นไปเทียบเท่ากับ {1,}
*: จับคู่รายการก่อนหน้า 0 หรือมากกว่านั้นเทียบเท่ากับ {0,}
การเลือกการจัดกลุ่มและอักขระอ้างอิงของนิพจน์ทั่วไป
|: เลือกการจับคู่การแสดงออกของ subexpression ทางด้านซ้ายหรือการแสดงออกทางด้านขวา
(…): การรวมกันรวมหลายรายการลงในหน่วยซึ่งสามารถแก้ไขได้โดยสัญลักษณ์เช่น "*", "+", "?" และ "|" และสามารถจดจำตัวละครที่ตรงกับกลุ่มนี้ ใช้
(?: ... ): รวมรายการรวมรายการเข้ากับหน่วย แต่จำไม่ได้ว่าตัวละครที่ตรงกับการสับเปลี่ยน
/N: จับคู่อักขระที่ตรงกับครั้งแรกที่กลุ่ม NTH จับคู่กัน การจัดกลุ่มแบบฟอร์มไม่ได้เข้ารหัส
ตัวดัดแปลงนิพจน์ทั่วไป
ฉัน: ทำการจับคู่แบบไม่อ่อนไหว
G: ดำเนินการจับคู่ทั่วโลกในระยะสั้นค้นหาการแข่งขันทั้งหมดแทนที่จะหยุดหลังจากค้นหาการแข่งขันครั้งแรก
M: รูปแบบการจับคู่แบบหลายบรรทัด ^ ตรงกับจุดเริ่มต้นของบรรทัดและจุดเริ่มต้นของสตริง $ ตรงกับจุดสิ้นสุดของบรรทัดและจุดสิ้นสุดของสตริง
วิธีการสตริงสำหรับการจับคู่รูปแบบ
search (): อาร์กิวเมนต์ของมันเป็นนิพจน์ทั่วไปการส่งคืนตำแหน่งเริ่มต้นของสตริงย่อยแรกเพื่อให้ตรงกับมันและส่งคืน -1 หากไม่มีสายย่อยที่ตรงกัน หากพารามิเตอร์ของการค้นหา () ไม่ใช่นิพจน์ทั่วไปมันจะถูกแปลงเป็นนิพจน์ทั่วไปผ่านตัวสร้าง Regexp การค้นหา () ไม่รองรับการค้นหาทั่วโลกเพราะจะละเว้นตัวดัดแปลง g ชอบ:
การคัดลอกรหัสมีดังนี้:
var s = "JavaScript" .Search (/script/i);
แทนที่ (): มันถูกใช้เพื่อทำการดึงและเปลี่ยน รับพารามิเตอร์สองตัวแรกคือนิพจน์ทั่วไปและที่สองคือสตริงที่จะเปลี่ยน หากมีการตั้งค่านิพจน์ทั่วไปการทดแทนทั่วโลกจะดำเนินการมิฉะนั้นจะมีการเปลี่ยนสตริงย่อยแรกที่ตรงกันเท่านั้น หากอาร์กิวเมนต์แรกไม่ใช่นิพจน์ทั่วไปให้ค้นหาสตริงโดยตรงแทนที่จะแปลงเป็นนิพจน์ทั่วไป ชอบ:
คัดลอกรหัสดังนี้: var s = "javascript". replace (/java/gi, "script");
Match (): อาร์กิวเมนต์ของมันเป็นนิพจน์ทั่วไป หากมีการตั้งค่า modifier G การจับคู่ทั่วโลกจะดำเนินการ ชอบ:
คัดลอกรหัสดังนี้: var d = '55 ff 33 HH 77 tt'.match (// d+/g);
split (): วิธีนี้ใช้เพื่อแยกสตริงที่เรียกมันลงในอาร์เรย์ที่ประกอบด้วย substrings ชอบ:
คัดลอกรหัสดังนี้: var d = '123,31,453,645'.split (', ');
var d = '21, 123, 44, 64, 67, 3'.split (// s*,/s*/); , "67", "3"]
2. วัตถุ regexp
แต่ละวัตถุ Regexp มี 5 คุณสมบัติ แหล่งที่มาของคุณสมบัติเป็นสตริงแบบอ่านอย่างเดียวที่มีข้อความของนิพจน์ทั่วไป คุณสมบัติทั่วโลกเป็นค่าบูลีนแบบอ่านอย่างเดียวเพื่อระบุว่านิพจน์ทั่วไปมีตัวดัดแปลง g คุณสมบัติไม่รู้ว่าเป็นค่าบูลีนแบบอ่านอย่างเดียวเพื่อระบุว่านิพจน์ทั่วไปมีตัวดัดแปลง i หรือไม่ คุณสมบัติ multiline เป็นค่าบูลีนแบบอ่านอย่างเดียวเพื่อระบุว่านิพจน์ทั่วไปมีตัวดัดแปลง m หรือไม่ คุณสมบัติ LastIndex เป็นจำนวนเต็มที่อ่านได้และเขียนได้
มีสองวิธีสำหรับวัตถุ regexp พารามิเตอร์ exec () เป็นสตริงและฟังก์ชั่นของมันคล้ายกับการจับคู่ () หากไม่พบการจับคู่ให้กลับมาเป็น NULL ไม่ว่านิพจน์ทั่วไปจะมีตัวดัดแปลง G จะส่งคืนอาร์เรย์เดียวกันหรือไม่ เมื่อวัตถุนิพจน์ปกติการเรียกใช้ exec () มีตัวดัดแปลง G มันจะตั้งค่าคุณสมบัติ LastIndex ของวัตถุนิพจน์ปกติปัจจุบันไปยังตำแหน่งอักขระถัดจากสตริงย่อยที่ตรงกัน เมื่อ Exects Exec () เป็นครั้งที่สองจะเริ่มดึงข้อมูลจากสตริงที่ระบุโดยคุณสมบัติ LastIndex และหาก EXEC () ไม่พบผลลัพธ์ที่ตรงกันมันจะรีเซ็ต LastIndex เป็น 0 ชอบ:
การคัดลอกรหัสมีดังนี้: var p = /java /g;
var text = "JavaScript สนุกกว่า Java!"
var r;
ในขณะที่ ((r = p.exec (ข้อความ))! = null) {
console.log (r, 'lastIndex:' + p.lastindex);
-
อีกวิธีหนึ่งคือการทดสอบ () ซึ่งมีพารามิเตอร์ที่เป็นสตริง ชอบ:
การคัดลอกรหัสมีดังนี้: var p = /java /i;
p.test ('javascript');