g ย่อมาจาก global match
m หมายความว่าสามารถจับคู่หลายบรรทัดได้
ฉันย่อมาจากการจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
^ ตรงกับจุดเริ่มต้นของสตริงอินพุต
$ ตรงกับส่วนท้ายของสตริงอินพุต
* จับคู่นิพจน์ย่อยก่อนหน้าเป็นศูนย์หรือเทียบเท่ากับ {0,}
+ จับคู่นิพจน์ย่อยก่อนหน้าหนึ่งครั้งหรือมากกว่านั้นเทียบเท่ากับ {1,}
? จับคู่นิพจน์ย่อยก่อนหน้าเป็นศูนย์หรือหนึ่งครั้ง เทียบเท่ากับ [0,1} เมื่ออักขระนี้ตามด้วยตัวระบุอื่น ๆ (*, +, ?, {n}, {n,}, {n, m}) การจับคู่ รูปแบบไม่โลภ โหมด Non-greedy จะจับคู่สตริงที่ค้นหาให้น้อยที่สุดเท่าที่จะเป็นไปได้ ในขณะที่โหมด greedy ที่เป็นค่าเริ่มต้นจะจับคู่สตริงที่ค้นหาให้มากที่สุดเท่าที่จะเป็นไปได้ ตัวอย่างเช่น สำหรับสตริง "oooo" 'o+?' จะจับคู่กับ "o" ตัวเดียว ในขณะที่ 'o+' จะตรงกับ 'o's ทั้งหมด
d จับคู่อักขระตัวเลขที่เทียบเท่ากับ [0-9]
D จับคู่อักขระที่ไม่ใช่ตัวเลข เทียบเท่ากับ [^0-9]
w เทียบเท่ากับ "[A-Za-z0-9_]"
W จับคู่อักขระที่ไม่ใช่คำใดๆ ซึ่งเทียบเท่ากับ "[^A-Za-z0-9]"
s จับคู่อักขระช่องว่างใดๆ รวมถึงช่องว่าง แท็บ ฟีดแบบฟอร์ม ฯลฯ เทียบเท่ากับ [fnrtv]
S จับคู่อักขระที่ไม่ใช่ช่องว่างซึ่งเทียบเท่ากับ [^frntv]
b จับคู่ขอบเขตคำ ซึ่งเป็นตำแหน่งระหว่างคำและช่องว่าง
B จับคู่ขอบเขตที่ไม่ใช่คำ
(รูปแบบ) จับคู่รูปแบบและรับการจับคู่ การจับคู่ที่ได้รับสามารถรับได้จากคอลเลกชัน Matches ที่สร้างขึ้น โดยใช้คอลเลกชัน SubMatches ใน VBScript หรือคุณสมบัติ $0…$9 ใน JScript
(?:รูปแบบ) จับคู่รูปแบบแต่ไม่ได้รับผลลัพธ์ที่ตรงกัน ซึ่งหมายความว่านี่คือการจับคู่แบบไม่ได้มาและไม่ได้เก็บไว้เพื่อใช้ในภายหลัง สิ่งนี้มีประโยชน์เมื่อใช้อักขระ "หรือ" (|) เพื่อรวมส่วนต่างๆ ของรูปแบบ ตัวอย่างเช่น 'industr(?:y|ies) เป็นคำที่สั้นกว่า 'industry|industries'
(?=รูปแบบ) การค้นหาไปข้างหน้า จับคู่สตริงการค้นหาที่จุดเริ่มต้นของรูปแบบการจับคู่สตริงใดๆ นี่คือการจับคู่ที่ไม่ดึงข้อมูล กล่าวคือ ไม่จำเป็นต้องดึงการจับคู่เพื่อใช้ในภายหลัง ตัวอย่างเช่น 'Windows (?=95|98|NT|2000)' จะจับคู่ "Windows" ใน "Windows 2000" แต่ไม่ตรงกับ "Windows" ใน "Windows 3.1" การดึงข้อมูลล่วงหน้าไม่ใช้อักขระ กล่าวคือ หลังจากการจับคู่เกิดขึ้น การค้นหาการจับคู่ถัดไปจะเริ่มต้นทันทีหลังจากการจับคู่ครั้งล่าสุด แทนที่จะเริ่มต้นหลังจากอักขระที่มีการดึงข้อมูลล่วงหน้า
(?!รูปแบบ) lookahead เชิงลบจะจับคู่สตริงการค้นหาที่จุดเริ่มต้นของสตริงใดๆ ที่ไม่ตรงกับรูปแบบ นี่คือการจับคู่ที่ไม่ดึงข้อมูล กล่าวคือ ไม่จำเป็นต้องดึงการจับคู่เพื่อใช้ในภายหลัง ตัวอย่างเช่น 'Windows (?!95|98|NT|2000)' สามารถจับคู่ "Windows" ใน "Windows 3.1" ได้ แต่จะจับคู่กับ "Windows" ใน "Windows 2000" ไม่ได้ การตรวจสอบล่วงหน้าไม่ใช้อักขระ กล่าวคือ หลังจากการจับคู่เกิดขึ้น การค้นหาการจับคู่ถัดไปจะเริ่มต้นทันทีหลังจากการจับคู่ครั้งล่าสุด แทนที่จะเริ่ม
จับคู่
โค้ดโปรแกรม
ตัวอักษรจีน 2-4 ตัวหลังจากอักขระที่มีการตรวจสอบล่วงหน้า
/^[u4e00-u9fa5]{2,4}$/g;
รหัสโปรแกรม
อักขระ 6 ถึง 18 (ตัวอักษร ตัวเลข ขีดล่าง)
/^w{6,18}$/;
รหัสโปรแกรม
/^[A-Za-z0-9_]$/;
โค้ดโปรแกรม
แท็ก HTML
/<[^>]*>|</[^>]*>/gm;
รหัสโปรแกรม
/</?[^>]+>/gm;
รหัสโปรแกรม
ช่องซ้ายและขวา
/(^s*)|(s*$)/g;
ลำดับความสำคัญ (จากมากไปน้อย)
อักขระหลีก
(),(?:),(?=),[] วงเล็บกลม และวงเล็บเหลี่ยม
* , + , ? , {n} , {n,} , {n,m} ตัวระบุ
^ , [vapour:content]nbsp; ตำแหน่งและลำดับ
| การดำเนินการ "หรือ"
รหัสโปรแกรม
คำที่เหมือนกันสองรหัส
ติดต่อกันโดยคั่นด้วยช่องว่าง
/b([az]+) 1b/gim ;
ในตัวอย่างนี้ นิพจน์ย่อยคือแต่ละพจน์ระหว่างวงเล็บ
นิพจน์ที่บันทึกประกอบด้วยอักขระตัวอักษรตั้งแต่หนึ่งตัวขึ้นไป ตามที่ระบุโดย '[az]+'
ส่วนที่สองของนิพจน์ทั่วไปคือการอ้างอิงถึงการจับคู่ย่อยที่บันทึกไว้ก่อนหน้านี้ ซึ่งเป็นการเกิดขึ้นครั้งที่สองของคำที่ตรงกับนิพจน์ที่ต่อท้าย
'1' ใช้เพื่อระบุการจับคู่ย่อยรายการแรก เมตาอักขระขอบเขตคำช่วยให้แน่ใจว่าตรวจพบเฉพาะคำแต่ละคำเท่านั้น
หากไม่ดำเนินการนี้ สำนวนเช่น "ออกแล้ว" หรือ "นี่คือ" จะได้รับการยอมรับอย่างไม่ถูกต้อง
รหัสโปรแกรม
var ss = "ราคาน้ำมันเพิ่มขึ้นหรือเปล่า? ราคาน้ำมันเพิ่มขึ้นหรือเปล่า?";
var re = /b([az]+) 1b/gim;
var rv = ss.replace(อีกครั้ง,"$1");
document.write(rv) //Output "ราคาน้ำมันขึ้นหรือเปล่า?. ราคาน้ำมันขึ้นหรือเปล่า?"
รหัสโปรแกรม
/bCha/
จับคู่อักขระสามตัวแรกของคำว่า 'บท' เนื่องจากปรากฏหลังขอบเขตคำ
รหัสโปรแกรม
/terb/
จับคู่ 'ter' ในคำว่า 'Chapter' เพราะปรากฏก่อนขอบเขตคำ
รหัสโปรแกรม
/Bapt/
จับคู่ 'apt' เพราะอยู่ตรงกลางของ 'Chapter' แต่ไม่ตรงกับ 'apt' ใน 'aptitude' เพราะอยู่หลังขอบเขตคำ
-
รหัสโปรแกรม
ที่อยู่ URL
/(w+)://([^/:]+)(:d*)?([^#]*)/
แยก URI ต่อไปนี้เป็นโปรโตคอล (ftp, http ฯลฯ ) ชื่อโดเมน ที่อยู่และหน้า/เส้นทาง:
http://msdn.microsoft.com:80/scripting/default.htm
นิพจน์ย่อยเพิ่มเติมแรกถูกใช้เพื่อจับภาพส่วนโปรโตคอลของที่อยู่เว็บ นิพจน์ย่อยนี้ตรงกับคำใดๆ ที่นำหน้าด้วยเครื่องหมายทวิภาคและเครื่องหมายทับสองอัน นิพจน์ย่อยเพิ่มเติมที่สองจะจับที่อยู่โดเมนของที่อยู่ นิพจน์ย่อยนี้ตรงกับลำดับอักขระใดๆ ที่ไม่รวมอักขระ '^', '/' หรือ ':' นิพจน์ย่อยเพิ่มเติมที่สามจะจับหมายเลขพอร์ตของเว็บไซต์ หากมีการระบุไว้ นิพจน์ย่อยนี้ตรงกับตัวเลขตั้งแต่ศูนย์ขึ้นไปตามด้วยเครื่องหมายทวิภาค สุดท้าย นิพจน์ย่อยเพิ่มเติมที่สี่จะบันทึกเส้นทางและ/หรือข้อมูลเพจที่ระบุโดยที่อยู่เว็บ นิพจน์ย่อยนี้ตรงกับอักขระตั้งแต่หนึ่งตัวขึ้นไป ยกเว้น '#' หรือการเว้นวรรค
เมื่อนำนิพจน์ทั่วไปไปใช้กับ URI ที่แสดงด้านบน รายการย่อยจะมีรายการต่อไปนี้:
RegExp.$1 มี "http"
RegExp.$2 มี "msdn.microsoft.com"
RegExp.$3 มี ":80"
RegExp.$4
วิธีที่1
ที่ มีนิพจน์ทั่วไป
"/scripting/default.htm"
วิธีทดสอบส่งคืนค่าบูลีนซึ่งระบุว่ามีรูปแบบอยู่ในสตริงที่กำลังค้นหาหรือไม่
คุณสมบัติของวัตถุ RegExp ส่วนกลางไม่ได้รับการ
แก้ไข
วิธีทดสอบ
ตัวอย่างที่ 1
http://www.knowsky.com/
รหัสโปรแกรม
var url=" http://msdn.microsoft.com:80/scripting/default.html ";
var reg=/(w+)://([^/:]+)(:d*)?([^#]*)/;
var flag=reg.test(url);
ธง // คืนค่าจริง
RegExp.$1 // ส่งคืน "http"
RegExp.$2 // ส่งคืน "msdn.microsoft.com"
RegExp.$3 //ส่งคืน ":80"
$egExp.$4 //ส่งคืน "/scripting/default.html"
วิธีค้นหาหรือทดสอบไม่สามารถอัปเดตออบเจ็กต์ RegExp ส่วนกลางได้ ดังนั้น RegExp.input, RegExp.index และ RegExp.lastIndex จึงส่งคืน undefinition
2 วิธีการจับคู่
ใช้รูปแบบนิพจน์ทั่วไปเพื่อทำการค้นหาในสตริงและส่งกลับผลลัพธ์ที่มี การค้นหาเป็นอาร์เรย์
รหัสโปรแกรม
stringObj.match(rgExp)
หากวิธีจับคู่ไม่พบรายการที่ตรงกัน ก็จะส่งกลับค่าว่าง หากพบการจับคู่ อาร์เรย์จะถูกส่งกลับและคุณสมบัติของออบเจ็กต์ RegExp ส่วนกลางจะได้รับการอัปเดตเพื่อแสดงการจับคู่
อาร์เรย์ที่ส่งคืนโดยวิธีจับคู่มีแอตทริบิวต์สามรายการ ได้แก่ อินพุต ดัชนี และ LastIndex
คุณสมบัติอินพุตประกอบด้วยสตริงทั้งหมดที่กำลังค้นหา
คุณสมบัติดัชนีประกอบด้วยตำแหน่งของสตริงย่อยที่ตรงกันภายในสตริงการค้นหาทั้งหมด
คุณสมบัติ LastIndex มีตำแหน่งถัดจากอักขระตัวสุดท้ายในการแข่งขันครั้งล่าสุด
หากไม่ได้ตั้งค่าสถานะส่วนกลาง (g) องค์ประกอบ 0 ของอาร์เรย์จะมีการจับคู่ทั้งหมด และองค์ประกอบ 1 ถึง n จะมีการจับคู่ย่อยใดๆ ที่เกิดขึ้นในการแข่งขัน
ซึ่งเทียบเท่ากับวิธี exec โดยไม่ต้องตั้งค่าสถานะสากล หากตั้งค่าสถานะส่วนกลาง องค์ประกอบ 0 ถึง n จะมีรายการที่ตรงกันทั้งหมด
example1 (ไม่ได้ตั้งค่าสถานะส่วนกลาง)
รหัสโปรแกรม
var url=" http://msdn.microsoft.com:80/scripting/default.html ";
var reg=/(w+)://([^/:]+)(:d*)?([^#]*)/;
var myArray=url.match(reg);
RegExp.$1 // ส่งคืน "http"
RegExp.$2 // ส่งคืน "msdn.microsoft.com"
RegExp.$3 //ส่งคืน ":80"
$egExp.$4 //ส่งคืน "/scripting/default.html"
myArray // ส่งคืน myArray[0]=" http://msdn.microsoft.com:80/scripting/default.html ",
myArray[1]="http",myArray[2]="msdn.microsoft.com",
myArray[3]=":80",myArray[4]="/scripting/default.html"
myArray.input // ส่งคืน "http://msdn.microsoft.com:80/scripting/default.html"
myArray.index // คืนค่า 0
myArray.lastIndex // ส่งคืน 51
ตัวอย่างที่ 2 (ชุดธงสากล)
รหัสโปรแกรม
var url=" http://msdn.microsoft.com:80/scripting/default.html ";
var reg=/(w+)://([^/:]+)(:d*)?([^#]*)/g;
var myArray=url.match(reg);
RegExp.$1 // ส่งคืน "http"
RegExp.$2 // ส่งคืน "msdn.microsoft.com"
RegExp.$3 //ส่งคืน ":80"
$egExp.$4 //ส่งคืน "/scripting/default.html"
myArray // ส่งคืน myArray=" http://msdn.microsoft.com:80/scripting/default.html "
myArray.input // ส่งคืน "http://msdn.microsoft.com:80/scripting/default.html"
myArray.index // ส่งคืน 0
myArray.lastIndex // ส่งคืน 51
สังเกตความแตกต่างหลังจากตั้งค่าสถานะสากล
หากไม่ได้ตั้งค่าสถานะส่วนกลาง (g) องค์ประกอบ 0 ของอาร์เรย์จะมีการจับคู่ทั้งหมด และองค์ประกอบ 1 ถึง n จะมีการจับคู่ย่อยใดๆ ที่เกิดขึ้นในการแข่งขัน
ซึ่งเทียบเท่ากับวิธี exec โดยไม่ต้องตั้งค่าสถานะสากล หากมีการตั้งค่าสถานะโกลบอล องค์ประกอบ 0 ถึง n จะมีค่าที่ตรงกันทั้งหมด
3 เมธอด exex
รันการค้นหาในสตริงโดยใช้รูปแบบนิพจน์ทั่วไป และส่งกลับอาร์เรย์ที่มีผลลัพธ์ของการค้นหา
รหัสโปรแกรม
rgExp.exec (str)
ถ้าเมธอด exec ไม่พบรายการที่ตรงกัน ก็จะส่งกลับค่าว่าง
หากพบรายการที่ตรงกัน เมธอด exec จะส่งคืนอาร์เรย์และคุณสมบัติของออบเจ็กต์ RegExp ส่วนกลางจะได้รับการอัปเดตเพื่อแสดงการจับคู่
องค์ประกอบ 0 ของอาร์เรย์มีการจับคู่โดยสมบูรณ์ ในขณะที่องค์ประกอบ 1 ถึง n มีการจับคู่ย่อยใดๆ ที่เกิดขึ้นในการแข่งขัน
ซึ่งเทียบเท่ากับวิธีจับคู่โดยไม่ต้องตั้งค่าสถานะสากล (g)
หากตั้งค่าสถานะสากลสำหรับนิพจน์ทั่วไป exec จะเริ่มดูตำแหน่งที่ระบุด้วยค่าของ LastIndex
หากไม่ได้ตั้งค่าสถานะส่วนกลาง exec จะละเว้นค่าของ LastIndex และค้นหาจากจุดเริ่มต้นของสตริง
อาร์เรย์ที่ส่งคืนโดยเมธอด exec มีแอตทริบิวต์ 3 รายการ ได้แก่ อินพุต ดัชนี และ LastIndex
คุณสมบัติอินพุตประกอบด้วยสตริงทั้งหมดที่กำลังค้นหา
แอตทริบิวต์ดัชนีประกอบด้วยตำแหน่งของสตริงย่อยที่ตรงกันในสตริงที่ค้นหาทั้งหมด
คุณสมบัติ LastIndex ประกอบด้วยตำแหน่งถัดไปของอักขระตัวสุดท้ายในการแข่งขัน
ตัวอย่างที่ 1 (ไม่มีการตั้งค่าสถานะโกลบอล)
รหัสโปรแกรม
var url=" http://msdn.microsoft.com:80/scripting/default.html ";
var reg=/(w+)://([^/:]+)(:d*)?([^#]*)/;
var myArray=reg.exec(url);
RegExp.$1 // ส่งคืน "http"
RegExp.$2 // ส่งคืน "msdn.microsoft.com"
RegExp.$3 //ส่งคืน ":80"
$egExp.$4 //ส่งคืน "/scripting/default.html"
myArray // ส่งคืน myArray[0]=" http://msdn.microsoft.com:80/scripting/default.html ",
myArray[1]="http",myArray[2]="msdn.microsoft.com",
myArray[3]=":80",myArray[4]="/scripting/default.html"
myArray.input // ส่งคืน "http://msdn.microsoft.com:80/scripting/default.html"
myArray.index // ส่งคืน 0
myArray.lastIndex // ส่งคืน 51
เมื่อไม่ได้ตั้งค่าสถานะส่วนกลาง (g) วิธีการจับคู่จะเหมือนกับวิธี exec
ตัวอย่างที่ 2 (ตั้งค่าสถานะโกลบอล)
รหัสโปรแกรม
var url=" http://msdn.microsoft.com:80/scripting/default.html ";
var reg=/(w+)://([^/:]+)(:d*)?([^#]*)/;
var myArray=reg.exec(url);
RegExp.$1 // ส่งคืน "http"
RegExp.$2 // ส่งคืน "msdn.microsoft.com"
RegExp.$3 //ส่งคืน ":80"
$egExp.$4 //ส่งคืน "/scripting/default.html"
myArray // ส่งคืน myArray[0]=" http://msdn.microsoft.com:80/scripting/default.html ",
myArray[1]="http",myArray[2]="msdn.microsoft.com",
myArray[3]=":80",myArray[4]="/scripting/default.html"
myArray.input // ส่งคืน "http://msdn.microsoft.com:80/scripting/default.html"
myArray.index // คืนค่า 0
myArray.lastIndex // ส่งคืน 51
4 วิธีการค้นหา
ส่งคืนตำแหน่งของสตริงย่อยแรกที่ตรงกับเนื้อหาการค้นหาของนิพจน์ทั่วไป
รหัสโปรแกรม
stringOjb.search(rgExp)
วิธีค้นหาจะระบุว่ามีรายการที่ตรงกันหรือไม่
หากพบรายการที่ตรงกัน วิธีการค้นหาจะส่งกลับค่าจำนวนเต็มซึ่งระบุค่าออฟเซ็ตของรายการที่ตรงกันจากจุดเริ่มต้นของสตริง
หากไม่พบรายการที่ตรงกัน ระบบจะส่งคืน -1
ตัวอย่างที่ 1
รหัสโปรแกรม
var url=" http://msdn.microsoft.com:80/scripting/default.html ";
var reg=/(w+)://([^/:]+)(:d*)?([^#]*)/;
var flag=url.search(reg);
ธง // กลับ 0
RegExp.$1 // ส่งคืน "http"
RegExp.$2 // ส่งคืน "msdn.microsoft.com"
RegExp.$3 //ส่งคืน ":80"
$egExp.$4 //ส่งคืน "/scripting/default.html"
วิธีค้นหาหรือทดสอบไม่สามารถอัปเดตออบเจ็กต์ RegExp ส่วนกลางได้ ดังนั้น RegExp.input, RegExp.index และ RegExp.lastIndex จึงส่งคืนไม่ได้กำหนดไว้
5 วิธีการแทนที่
ส่งคืนสำเนาของสตริงหลังจากการแทนที่ข้อความตามนิพจน์ทั่วไป และ
สามารถอัปเดตออบเจ็กต์ RegExp ส่วนกลางได้