EXEC เป็นวิธีการนิพจน์ทั่วไปไม่ใช่วิธีการของสตริงและพารามิเตอร์ของมันคือสตริงดังที่แสดงด้านล่าง:
var re = new regexp (// d/); re.exec ("abc4def"); // หรือใช้สไตล์ Perl: //d/.exec ("abc4def"); // การจับคู่เป็นวิธีที่จัดทำโดยคลาสสตริง พารามิเตอร์ของมันคือวัตถุนิพจน์ทั่วไป การใช้งานต่อไปนี้ถูกต้อง: "abc4def". -match (/d);Exec และ Match Return Arrays
หากนิพจน์ทั่วไปที่ดำเนินการเมธอด EXED ไม่ได้ถูกจัดกลุ่ม (โดยไม่มีวงเล็บ) จากนั้นหากมีการจับคู่มันจะส่งคืนอาร์เรย์ด้วยองค์ประกอบเดียวเท่านั้นและองค์ประกอบเดียวของอาร์เรย์นี้คือสตริงแรกที่นิพจน์ทั่วไปตรงกับ; หากไม่มีการจับคู่มันจะส่งคืนค่า NULL
ฟังก์ชั่นการแจ้งเตือนสองฟังก์ชั่นต่อไปนี้จะเหมือนกัน:
var str = "cat, hat"; var p =/at/; // ไม่มีการแจ้งเตือนแอตทริบิวต์ g (p.exec (str)) การแจ้งเตือน (str.match (p))
ทั้งหมดคือ "ที่" ในกรณีนี้ Exec เทียบเท่ากับการจับคู่
อย่างไรก็ตามหากนิพจน์ทั่วไปถูกจับคู่ทั่วโลก (แอตทริบิวต์ G) รหัสด้านบนจะมีผลลัพธ์ที่แตกต่างกัน:
var str = "cat, hat"; var p =/at/g; // หมายเหตุการแจ้งเตือนแอตทริบิวต์ G (p.exec (str)) การแจ้งเตือน (str.match (p))
พวกเขาคือ
"ที่"
"ที่, ที่".
เพราะ EXEC จะส่งคืนเฉพาะการแข่งขันครั้งแรกเสมอและการจับคู่จะส่งคืนการแข่งขันทั้งหมดเมื่อระบุแอตทริบิวต์ G อย่างสม่ำเสมอ
หากผู้บริหารพบการจับคู่และมีกลุ่มอาร์เรย์ที่ส่งคืนจะมีองค์ประกอบหลายอย่าง องค์ประกอบแรกคือการจับคู่ที่ค้นพบและองค์ประกอบที่ตามมาคือการจัดกลุ่มครั้งแรกที่สอง ... ในการแข่งขัน (อ้างอิงย้อนกลับ)
รหัสต่อไปนี้จะปรากฏขึ้น "cat2, ที่":
var str = "cat2, hat8"; var p =/c (at)/d/; การแจ้งเตือน (p.exec (str))
องค์ประกอบแรกคือสตริงที่ตรงกัน "CAT2" และองค์ประกอบที่ตามมาคือการจับคู่ "ที่" ในวงเล็บ
ฟังก์ชั่นการจับคู่จะรบกวนเงื่อนไขต่อไปนี้และตระหนักถึงฟังก์ชั่นเดียวกันกับ EXEC:
1. นิพจน์ทั่วไปมีการจัดกลุ่ม (วงเล็บ)
2. ส่งคืนการจับคู่ที่ไม่ซ้ำกัน
มาดูรหัสต่อไปนี้:
var str = "cat2, hat8"; var p =/c (at)/d/; การแจ้งเตือน (p.exec (str)) การแจ้งเตือน (str.match (p))
ข้อความ "cat2, at" จะปรากฏขึ้น คุณคิดว่ามันแปลกมากหรือไม่?
สรุป:
การจับคู่เป็นอาร์เรย์ที่ส่งคืนสตริงการจับคู่ทั้งหมด แต่นิพจน์ทั่วไปจะต้องระบุแอตทริบิวต์ G Global G เพื่อส่งคืนการแข่งขันทั้งหมด หากไม่ได้ระบุแอตทริบิวต์ G อาร์เรย์ที่มีองค์ประกอบเดียวเท่านั้นที่จะถูกส่งคืน
EXEC จะส่งคืนข้อมูลที่เกี่ยวข้องกับการจับคู่แรกเสมอซึ่งส่งคืนอาร์เรย์รวมถึงสตริงการจับคู่แรกการย้อนกลับไปยังแพ็กเก็ตทั้งหมด
ในบางกรณีผลลัพธ์ที่ส่งคืนโดย Exec นั้นเหมือนกับผลลัพธ์ที่ส่งคืนโดยการจับคู่:
var str = "cat, hat"; var p =/at/; // ไม่มีการแจ้งเตือนแอตทริบิวต์ g (p.exec (str)) การแจ้งเตือน (str.match (p))
"ที่" ปรากฏขึ้น
ในบางกรณีผลลัพธ์ที่ส่งคืนโดยการจับคู่จะเหมือนกับผลลัพธ์ที่ส่งคืนโดย EXEC:
var str = "cat2, hat8"; var p =/c (at)/d/; การแจ้งเตือน (p.exec (str)) การแจ้งเตือน (str.match (p))
"cat2 ที่" ปรากฏขึ้น
บทความข้างต้นการวิเคราะห์เชิงลึกของวิธีการบริหารและการจับคู่ใน JavaScript เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น