1: วิธีสร้างนิพจน์ทั่วไป
1. รูปแบบข้อความวิธีการใช้งานมีดังนี้:
/pattern/flags (เช่น:/mode/mark)
2. Regexp Constructor วิธีการใช้งานมีดังนี้:
ใหม่ regexp ("pattern" [, "flags"]) (เช่น: ใหม่ regexp ("pattern" [, "mark"])))))))))))))))))))))))
พารามิเตอร์:
รูปแบบ: ข้อความที่แสดงถึงนิพจน์ทั่วไป
Flags (TAG): หากคุณระบุรายการนี้ธงอาจเป็นหนึ่งในสิ่งต่อไปนี้:
G: Global Match (การจับคู่เต็ม)
ฉัน: ละเว้นกรณี (ละเว้นกรณี)
GI: ทั้งการจับคู่ทั่วโลกและละเว้นกรณี (ตรงกับค่าที่เป็นไปได้ทั้งหมดและละเว้นกรณี)
หมายเหตุ: อย่าใช้เครื่องหมายคำพูดเพื่อทำเครื่องหมายพารามิเตอร์ในรูปแบบข้อความและอย่าใช้เครื่องหมายคำพูดเพื่อทำเครื่องหมายพารามิเตอร์ของฟังก์ชันตัวสร้าง ERGOU ดังนั้นนิพจน์ต่อไปนี้
เทียบเท่า:
/ab+c/i ============================== ใหม่ regexp ใหม่ ("AB+C", "I")
อธิบาย:
เมื่อสร้างนิพจน์ทั่วไปโดยใช้ฟังก์ชั่นคอนสตรัคเตอร์จำเป็นต้องใช้สตริงปกติเพื่อหลีกเลี่ยงกฎ (รวมถึงอักขระนำ/ ในสตริง)
ตัวอย่างเช่นข้อความสองข้อความต่อไปนี้เทียบเท่า:
Re = new Regexp ("// w+");
Re = // w+/
หมายเหตุ: regexp มีแอตทริบิวต์ $ ล่วงหน้า
$ 1, ... , คุณลักษณะ $ 9
จับคู่ย่อยที่อยู่ในวงเล็บถ้ามี
มันเป็นคุณสมบัติของ regexp
คงที่อ่านเท่านั้น
มีให้ใน JavaScript 1.2, NES 3.0 หรือสูงกว่า
คำอธิบาย: เนื่องจากอินพุตเป็นคุณสมบัติคงที่ไม่ใช่คุณลักษณะของวัตถุนิพจน์ทั่วไปแต่ละรายการ คุณสามารถเข้าถึงสิ่งนี้ได้โดยใช้ regexp.input
คุณสมบัติ.
จำนวนสตริงย่อยที่สามารถเพิ่มด้วยวงเล็บได้ไม่ จำกัด แต่วัตถุนิพจน์ทั่วไปสามารถรักษาได้ 9 ครั้งสุดท้ายหากคุณต้องการเข้าถึงทั้งหมด
สตริงการจับคู่ในวงเล็บคุณสามารถใช้อาร์เรย์ที่ส่งคืนได้
<! doctype html public "-// w3c // dtd html 4.0 transitional // en"> <html> <head> <title> เอกสารใหม่ </title> <ภาษาสคริปต์ = "javascript1.2"> var regexp = new Regexp ("(// w+) // s (//) str = "John Smith"; newSstr = str.replace (regexp, "$ 2"); newSstr2 = str.replace (regexp, "$ 1"); document.write ("สตริงต้นฉบับ:"+str+"<br/>"); Document.write (NewsTr+"<br/>"); document.write (newstr2+"<br/>"); document.write ('$ 1 ='+regexp. $ 1+"$ 2 ="+regexp. $ 2); </script> </head> <body> </body> </html>2: วิธีการจับคู่ () สามารถดึงค่าที่ระบุภายในสตริงหรือค้นหาการจับคู่สำหรับนิพจน์ทั่วไปหนึ่งรายการขึ้นไป มันส่งคืนค่าที่ระบุไม่ใช่ตำแหน่งของสตริง
ไวยากรณ์
StringObject.match (searchValue)
คำอธิบายพารามิเตอร์ stringObject.match (regexp)
ต้องการค่าค้นหา ระบุค่าสตริงที่จะเรียกคืน
จำเป็นต้องมี Regexp วัตถุ Regexp ที่ระบุรูปแบบที่จะจับคู่ หากพารามิเตอร์ไม่ใช่วัตถุ regexp คุณจะต้องส่งผ่านไปยังตัวสร้าง Regexp ก่อนและแปลงเป็นวัตถุ Regexp
ค่าส่งคืน
เก็บอาร์เรย์ผลลัพธ์ที่ตรงกัน เนื้อหาของอาร์เรย์นี้ขึ้นอยู่กับว่า regexp มีธงทั่วโลก g
อธิบาย
วิธีการจับคู่ () จะดึงสตริงสตริงเพื่อค้นหาการจับคู่ข้อความอย่างน้อยหนึ่งรายการ พฤติกรรมของวิธีนี้ขึ้นอยู่กับว่า Regexp มีธง G หรือไม่
หาก regexp ไม่มีธง G วิธีการจับคู่ () สามารถทำการจับคู่หนึ่งครั้งใน StringObject หากไม่พบข้อความที่ตรงกันให้จับคู่ () ส่งคืนค่า NULL มิฉะนั้นจะส่งคืนอาร์เรย์ที่เก็บข้อมูลเกี่ยวกับข้อความที่ตรงกันที่พบ
ตัวอย่างการใช้งานที่ตรงกัน:
<! doctype html public "-// w3c // dtd html 4.0 transitional // en"> <html> <head> <title> เอกสารใหม่ </title> <ภาษาสคริปต์ = "JavaScript1.2"> var str = "1 บวก 2 เท่ากับ 3"; var str2 = "11/23/55"; ผลลัพธ์ var = str.match (ใหม่ regexp ("// d+", "gi")); สำหรับ (var i = 0; i <results.length; i ++) {document.write (ผลลัพธ์ [i]+"<br/>"); } var res = str2.match (ใหม่ regexp ("(// d // d?)/(// d // d?)/(// d // d)"); if (str2.length == res [0] .length) {document.write (res [1]+"<br/>"); document.write (res [2]+"<br/>"); document.write (res [3]+"<br/>"); } </script> </head> <body> </body> </html> ฟังก์ชั่น DateCheck (ค่า) {re = ใหม่ regexp ("(// d // d?)/(// d // d?)/(// d // d)"); var result = value.match (re); if (ผลลัพธ์) {ถ้า (ผลลัพธ์ [0] .length! = value.length) {การแจ้งเตือน ("รูปแบบวันที่ผิดรูปแบบที่ถูกต้องควรเป็น mm/dd/yy") ส่งคืนเท็จ; } else {var t = ผลลัพธ์ [3]; var y = parseint ("20" + t); var m = parseInt (ผลลัพธ์ [1], 10) - 1; var day = parseint (ผลลัพธ์ [2], 10); var d = วันที่ใหม่ (y, m, วัน); if (d.getFuleliar ()! = y || d.getMonth ()! = m || d.getDate ()! = วัน) {แจ้งเตือน ("วันที่ผิดพลาด!") ส่งคืนเท็จ; } else {var sm = ผลลัพธ์ [1] .length == 1? '0' + ผลลัพธ์ [1]: ผลลัพธ์ [1]; var sday = ผลลัพธ์ [2] .length == 1? '0' + ผลลัพธ์ [2]: ผลลัพธ์ [2]; var sy = ผลลัพธ์ [3]; อื่น ๆ ส่งคืน sm + '/' + sday + '/' + sy; }}} else {alert ("รูปแบบวันที่ผิดรูปแบบที่ถูกต้องควรเป็น mm/dd/yy."); กลับเท็จ; -