1. วิธีคอนสตรัคเตอร์
var reg = new RegExp ( 'd' , 'gi' ) ;
2. วิธีการตามตัวอักษร
var reg = / d / gi ;
ตัวดัดแปลงมีสามประเภท: i, g, m
สามารถปรากฏพร้อมกันได้โดยไม่ต้องเรียงลำดับ (เช่น gi
เหมือนกับ ig
) โปรดดูคำแนะนำด้านล่าง
ตัวแก้ไข | แสดงให้เห็น |
---|---|
ฉัน | ละเว้นการจับคู่ตัวพิมพ์ |
ก | การจับคู่ระดับโลก คือ จับคู่หนึ่งนัดแล้วจับคู่ต่อจนจบ |
ม | การจับคู่แบบหลายบรรทัด กล่าวคือ การจับคู่จะไม่หยุดหลังจากขึ้นบรรทัดใหม่จนจบ |
เครื่องหมาย | ผล |
---|---|
- | เนื่องจากเป็นการเปลี่ยนความหมาย กล่าวคือ อักขระที่อยู่หลัง "" มักจะไม่ถูกตีความตามความหมายดั้งเดิม ตัวอย่างเช่น /b/ จะจับคู่อักขระ "b" เมื่อเพิ่ม /b/ ไว้ข้างหน้า b ความหมายของการเปลี่ยนแปลงคือเพื่อให้ตรงกับขอบเขตของคำ หรือการคืนค่าอักขระฟังก์ชันนิพจน์ทั่วไป เช่น " " จะจับคู่อักขระเมตาก่อนหน้า 0 หรือมากกว่านั้น /a / จะจับคู่ a, aa, aaa หลังจากเพิ่ม "" แล้ว /a*/ จะจับคู่เฉพาะ "a *" |
- | จับคู่อินพุตหรือจุดเริ่มต้นของบรรทัด /^a/ ตรงกับ "an A" แต่ไม่ตรงกับ "An a" |
- | จับคู่อินพุตหรือส่วนท้ายของบรรทัด /a$/ ตรงกับ "An a" แต่ไม่ตรงกับ "an A" |
- | จับคู่อักขระตัวเดียวใดๆ ยกเว้นบรรทัดใหม่และตัวสิ้นสุด |
- | จับคู่เมตาอักขระก่อนหน้า 0 ครั้งขึ้นไป /ba*/ จะจับคู่ b,ba,baa,baaa |
- | จับคู่เมตาอักขระก่อนหน้า 1 ครั้งขึ้นไป /ba+/ จะจับคู่ ba, baa, baaa |
- | จับคู่อักขระเมตาก่อนหน้า 0 หรือ 1 ครั้ง /ba?/ จะจับคู่ b,ba |
(เอ็กซ์) | จับคู่ x และบันทึก x ในตัวแปรชื่อ $1...$9 |
x | ย |
{n} | ตรงกัน n ครั้ง |
{n,} | จับคู่ n ครั้งขึ้นไป |
{n,m} | จับคู่เวลานาโนเมตร |
[xyz] | ชุดอักขระ (ชุดอักขระ) จับคู่อักขระใด ๆ (หรืออักขระเมตา) ในชุดนี้ |
[^เอ็กซ์ซีซ] | ไม่ตรงกับตัวละครใดๆ ในชุดนี้ |
[อัซ] | ตัวอักษร [ ] ใดๆ สามารถแสดงถึงตัวอักษรใดก็ได้ |
[^อัซ] | ^ ที่ไม่ใช่ตัวอักษร [] หมายถึงยกเว้น |
[ข] | จับคู่อักขระ Backspace |
ข | จับคู่ขอบเขตคำ |
บี | จับคู่คำที่ไม่มีขอบเขต |
cX | ในที่นี้ X เป็นอักขระควบคุม /cM/ ตรงกับ Ctrl-M |
d | จับคู่อักขระตัวอักษรและตัวเลข /d/ = /[0-9]/ |
D | จับคู่อักขระที่ไม่ใช่ตัวอักษรและตัวเลข /D/ = /[^0-9]/ |
n | จับคู่อักขระขึ้นบรรทัดใหม่ |
r | ตรงกับการคืนรถม้า |
ฉ | จับคู่ฟีดแบบฟอร์ม |
s | จับคู่อักขระช่องว่าง รวมถึง n, r, f, t, v ฯลฯ |
ส | จับคู่อักขระที่ไม่ใช่ช่องว่าง เท่ากับ /[^nfrtv]/ |
t | จับคู่อักขระแท็บ |
v | จับคู่อักขระแท็บคู่ |
w | จับคู่อักขระที่สามารถสร้างคำได้ (ตัวอักษรและตัวเลข นี่คือคำแปลฟรีของฉัน รวมถึงตัวเลขด้วย) รวมถึงขีดล่าง เช่น [w] จับคู่ 5 ใน "$5.98" ซึ่งเท่ากับ [a-zA-Z0-9 ] |
ว | จับคู่อักขระที่ไม่สามารถสร้างคำได้ เช่น [W] จับคู่ $ ใน "$5.98" ซึ่งเท่ากับ [^a-zA-Z0-9] |
จับคู่อักขระ NUL |
การยืนยันความกว้างเป็นศูนย์ใช้เพื่อค้นหาสิ่งต่าง ๆ ก่อนหรือหลังเนื้อหาบางส่วน (แต่ไม่รวมเนื้อหาเหล่านี้) กล่าวคือ ถูกใช้เช่น b,^,$
เพื่อระบุตำแหน่งที่ควรตรงตามเงื่อนไขบางประการ (เช่น การยืนยัน) ดังนั้น เรียกอีกอย่างว่าการยืนยันความกว้างเป็นศูนย์
การยืนยันก่อนหน้า | เรียกอีกอย่างว่าการยืนยัน lookahead เชิงบวกที่มีความกว้างเป็นศูนย์ (?=表达式) ซึ่งหมายถึงการจับคู่ตำแหน่งก่อนนิพจน์ | ตัวอย่างเช่น [az]*(?=ing) สามารถจับคู่ cook และร้องเพลงในการร้องเพลงทำอาหารได้ |
หมายเหตุ: ขั้นตอนการดำเนินการของการยืนยัน lookahead มีดังนี้ ขั้นแรกให้ค้นหา ing แรกจากด้านขวาสุดของสตริงที่จะจับคู่ (นั่นคือ นิพจน์ในการยืนยัน lookahead) จากนั้นจึงจับคู่นิพจน์ก่อนหน้า หากไม่สามารถจับคู่ได้ จับคู่ ดำเนินการต่อ ค้นหา ing ที่สอง จากนั้นจับคู่สตริงก่อน ing ที่สอง ถ้ามันตรงกัน ให้จับคู่
การยืนยันภายหลัง | หรือที่เรียกว่าการยืนยันหลังมองย้อนกลับแบบความกว้างเป็นศูนย์ (?<=表达式) ซึ่งหมายถึงการจับคู่ตำแหน่งหลังนิพจน์ | ตัวอย่างเช่น (?<=abc).* สามารถจับคู่ defg ใน abcdefg ได้ |
หมายเหตุ: การยืนยันช่วงท้ายเป็นสิ่งที่ตรงกันข้ามกับการยืนยันแบบมองไปข้างหน้าทุกประการ ขั้นตอนการดำเนินการมีดังนี้: ขั้นแรกให้ค้นหา abc แรกจากปลายซ้ายสุดของสตริงที่จะจับคู่ (นั่นคือ นิพจน์ในการยืนยันแบบมองไปข้างหน้า) ) จากนั้นจับคู่นิพจน์ต่อไปนี้ หากไม่สามารถจับคู่ได้ ให้ค้นหา abc ที่สองต่อไป จากนั้นจับคู่สตริงหลัง abc ที่สอง หากสามารถจับคู่ได้ ก็จะจับคู่กัน ตัวอย่างเช่น (?<=abc).*
สามารถจับคู่ defgabc ใน abcdefgabc แทน abcdefg
การยืนยันความกว้างเป็นศูนย์เชิงลบ | (?!表达式) ยังจับคู่ตำแหน่งที่มีความกว้างเป็นศูนย์ แต่ "การยืนยัน" ที่ตำแหน่งนี้จะใช้ค่าผกผันของนิพจน์ ตัวอย่างเช่น (?!表达式) แสดงถึงตำแหน่งก่อนนิพจน์ หากไม่ได้เก็บนิพจน์ไว้ , ตรงกับตำแหน่งนี้ ; หากนิพจน์เป็นจริง จะไม่ตรงกัน: ในทำนองเดียวกัน มีการยืนยันความกว้างเป็นศูนย์สองประเภท: "ครั้งแรก" และ "สุดท้าย" การยืนยันความกว้างเป็นศูนย์คือ (?<!表达式) |
(?<!表达式)
(?!表达式)
ใช้วงเล็บเพื่อล้อมสตริงที่ตรงกัน จากนั้นใช้นิพจน์ $1 ในค่าการแทนที่เพื่อรับค่าที่ตรงกันในปัจจุบัน ซึ่งอาจซับซ้อนกว่านี้ได้ ตัวอย่างเช่น หากมีหลายวงเล็บ คุณสามารถใช้ $1, $2, $3 เพื่อรับได้ ค่าที่สอดคล้องกัน หลังจากแทนที่ทั้งหมดแล้ว นี่คือข้อมูลที่เราต้องการในที่สุด
ตัวอย่างเช่น ต่อไปนี้เป็นนิพจน์ทั่วไปในช่องค้นหา ซึ่งสามารถจับคู่แอตทริบิวต์ class
ทั้งหมดในโครงสร้าง HTML
className = "([^0-9]+)"
จากนั้นเราก็สามารถทดแทนได้
className = { { $1 } }
แล้วมันจะ
className = "xxx" //转化为
className = { { xxx } }
1. วิธีการที่เกี่ยวข้องกับวัตถุ RegExp
ชื่อวิธีการ | สถานการณ์การใช้งาน | ส่งกลับค่า | ตัวอย่าง |
---|---|---|---|
ทดสอบ | พิจารณาว่าเข้ากันหรือไม่ | จริงหรือเท็จ | /d/.test('เอโน ยาว 2019') |
ทดสอบ | ส่งกลับผลลัพธ์ที่ตรงกัน ซึ่งคล้ายกับการจับคู่ | อาร์เรย์หรือโมฆะ | /d/.exec('เอโน ยาว 2019') |
2. วิธีการที่เกี่ยวข้องกับวัตถุสตริง
ชื่อวิธีการ | สถานการณ์การใช้งาน | ส่งกลับค่า | ตัวอย่าง |
---|---|---|---|
จับคู่ | ส่งคืนผลลัพธ์ที่ตรงกัน ภายใต้เงื่อนไขที่ไม่ใช่สากล ผลลัพธ์ที่ตรงกันทั้งหมดจะถูกส่งกลับพร้อมกัน | อาร์เรย์หรือโมฆะ | 'เอโนะ เหยา 2019'.match(/d/) |
แทนที่ | แทนที่สตริงด้วยสตริงอื่นหรือแทนที่สตริงที่ตรงกันปกติด้วยสตริงย่อยอื่น | อาร์เรย์หรือโมฆะ | 'เอโนะ ยาว 2019'.replace(/d/, '2019') |
ค้นหา | ค้นหาตำแหน่งของสตริงย่อยแรกที่ตรงกันและส่งกลับค่าดัชนี มิฉะนั้นจะส่งกลับ -1 | ดัชนี | 'เอโนะ ยาว 2019'.search(/d/, '2019') |
แยก | แยกอาร์เรย์ตามสตริงหรือสตริงที่ตกลงกัน ยอมรับสตริงหรือสตริงปกติ | ดัชนี | 'เอโนะ ยาว 2019'.search(/d/, '2019') |