ในอดีต JS ไม่ค่อยได้ใช้การแสดงออกปกติของ JS
เมื่อเร็ว ๆ นี้ฉันได้พบกับการแสดงออกปกติที่จำเป็นต้องใช้และศึกษาโดยวิธีการ
มีสองวิธีการนิยามของวัตถุนิพจน์ทั่วไป ::
1. คำจำกัดความแรก:
ใหม่ regexp (รูปแบบแอตทริบิวต์); ถ้า var reg = ใหม่ regexp ("abc", "g")
ในหมู่พวกเขารูปแบบคือเนื้อหาการแสดงออกของนิพจน์ราวกับว่าข้างต้นแสดง ABC
แอตทริบิวต์: G, การจับคู่ทั่วโลก, ฉันไม่ได้แยกความแตกต่างระหว่างตัวพิมพ์เล็กและตัวพิมพ์เล็ก M ดำเนินการจับคู่หลายบรรทัดการใช้งานมากที่สุดของ G และ I
2. คำจำกัดความที่สอง:/รูปแบบ/แอตทริบิวต์
เช่น: var reg = /abc /g;
กฎบางอย่างที่แสดงในนิพจน์ทั่วไปจะไม่ได้อธิบายที่นี่อีกต่อไปเฉพาะความแตกต่างระหว่าง EXEC และ MATCH:
1. EXEC เป็นวิธีการของนิพจน์ทั่วไปไม่ใช่วิธีการสตริง
เป็นคำจำกัดความข้างต้น
var reg = ใหม่ regexp ("abc");
var str = "3abc4, 5abc6";
reg.exec (str);
2. การจับคู่เป็นวิธีการสำหรับสตริงเพื่อดำเนินการตามกฎการแสดงออกปกติ
var reg = ใหม่ regexp ("abc");
var str = "3abc4, 5abc6";
str.match (เช่น);
3. EXEC และการแข่งขันกลับมาเป็นอาร์เรย์
หากนิพจน์ทั่วไปที่ดำเนินการโดย Exec ไม่มีการแสดงออกย่อย (เนื้อหาในวงเล็บขนาดเล็กเช่น/s*)/(/s*)/(/s*) หากมีการจับคู่ให้ส่งคืนเนื้อหาสตริงที่ตรงกันครั้งแรก เนื้อหามีเพียงองค์ประกอบเดียวในเวลานี้หากไม่ตรงกับและกลับไปเป็นโมฆะ
var reg = ใหม่ regexp ("abc");
var str = "3abc4, 5abc6";
การแจ้งเตือน (reg.exec (str));
การแจ้งเตือน (str.match (reg));
ดำเนินการรหัสเดียวกันคุณจะพบว่าเนื้อหาของทั้งสองนั้นเหมือนกัน: ABC
4. หากวัตถุนิพจน์ทั่วไปถูกกำหนดเป็นการจับคู่ทั่วโลกเป็น:
var reg = ใหม่ regexp ("abc", "g");
var str = "3abc4, 5abc6";
การแจ้งเตือน (reg.exec (str));
การแจ้งเตือน (str.match (reg));
สำหรับ ABC และ ABC, ABC;
5. เมื่อหมายความว่ามีการแสดงออกย่อยอยู่ใน:
var reg = ใหม่ regexp ("a (bc)");
var str = "3abc4, 5abc6";
การแจ้งเตือน (reg.exec (str));
การแจ้งเตือน (str.match (reg));
คุณจะพบว่าผลลัพธ์ของการดำเนินการทั้งสองคือ: ABC, BC;
6. เมื่อวัตถุนิพจน์ปกติถูกกำหนดให้เป็นคู่จับคู่
var reg = ใหม่ regexp ("a (bc)", "g");
var str = "3abc4, 5abc6";
การแจ้งเตือน (reg.exec (str));
การแจ้งเตือน (str.match (reg));
ผลที่ได้จากทั้งสองกลับมาคือ ABC, BC และ ABC, ABC
สรุปเป็น:
1. เมื่อนิพจน์ทั่วไปไม่มีการแสดงออกย่อยและถูกกำหนดเป็นการจับคู่ที่ไม่ใช่ -global ผลลัพธ์ของ EXEC และการจับคู่จะเหมือนกันและเนื้อหาสตริงที่ตรงกันครั้งแรกจะถูกส่งคืน;
2. เมื่อนิพจน์ทั่วไปไม่มีการแสดงออกย่อยและถูกกำหนดให้เป็นการจับคู่ทั่วโลก EXEC และการจับคู่การดำเนินการและมีเนื้อหาที่ตรงกันหลายรายการจากนั้นการจับคู่จะส่งคืนอาร์เรย์องค์ประกอบหลายอาร์เรย์;
3. เมื่อมีการแสดงนิพจน์ทั่วไปและถูกกำหนดให้เป็นการจับคู่ที่ไม่เต็ม -เต็มรูปแบบผลลัพธ์ของการดำเนินการของ EXEC และการจับคู่จะเหมือนกับข้างต้น
4. เมื่อมีการแสดงการแสดงออกปกติและกำหนดว่าเป็นการจับคู่ทั่วโลกผลลัพธ์ของ EXEC และการจับคู่จะแตกต่างกัน เช่นเดียวกับที่ 6, 6, 6, 6, 6, 6, 6th
กล่าวคือไม่ว่าผู้บริหารจะถูกกำหนดโดยสถานการณ์โดยรวมนั้นไม่เกี่ยวข้องกันหรือไม่และการแข่งขันนั้นเกี่ยวข้องกับสถานการณ์โดยรวมหรือไม่