อักขระปกติประกอบด้วยอักขระที่พิมพ์ออกมาและไม่ได้พิมพ์ทั้งหมดซึ่งไม่ได้ระบุไว้อย่างชัดเจนว่าเป็น metacharacters ซึ่งรวมถึงอักขระตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กทั้งหมดตัวเลขทั้งหมดเครื่องหมายวรรคตอนทั้งหมดและสัญลักษณ์บางอย่าง
นิพจน์ปกติที่ง่ายที่สุดคืออักขระปกติเดียวที่ตรงกับตัวละครในสตริงที่ค้นหา ตัวอย่างเช่นรูปแบบตัวละครเดี่ยว 'A' สามารถจับคู่ตัวอักษร 'A' ที่ปรากฏที่ใดก็ได้ในสตริงที่ค้นหา นี่คือตัวอย่างของรูปแบบการแสดงออกปกติของตัวละครเดี่ยว:
/a/ /7/ /M/การแสดงออกปกติของ VBScript ตัวละครเดี่ยวที่เทียบเท่าคือ:
a 7 Mสามารถรวมอักขระเดี่ยวหลายตัวเข้าด้วยกันเพื่อรับนิพจน์ที่ใหญ่กว่า ตัวอย่างเช่นนิพจน์ปกติของ JScript ต่อไปนี้ไม่มีอะไรอื่น แต่การแสดงออกที่สร้างขึ้นโดยการรวมการแสดงออกของตัวละครเดี่ยว 'A', '7' และ 'M'
/a7M/นิพจน์ VBScript ที่เทียบเท่าคือ:
a7Mโปรดทราบว่าไม่มีตัวดำเนินการเชื่อมต่อที่นี่ สิ่งที่คุณต้องทำคือวางตัวละครตัวหนึ่งไว้เบื้องหลังตัวละครอื่น
มี metacharacters จำนวนมากที่ต้องการการประมวลผลพิเศษเมื่อพยายามจับคู่พวกเขา เพื่อให้ตรงกับตัวละครพิเศษเหล่านี้คุณต้องหลบหนีพวกเขาก่อนนั่นคือใช้ backslash (/) ข้างหน้า ตารางต่อไปนี้ให้อักขระพิเศษเหล่านี้และความหมายของพวกเขา:
| อักขระพิเศษ | อธิบาย |
|---|---|
| - | ตรงกับตำแหน่งสิ้นสุดของสตริงอินพุต หากมีการตั้งค่าคุณสมบัติ multiline ของวัตถุ Regexp ให้ตั้งค่า $ จะตรงกับ '/n' หรือ '/r' เพื่อให้ตรงกับตัวละคร $ ให้ใช้ /$ |
| - | ทำเครื่องหมายตำแหน่งเริ่มต้นและจุดสิ้นสุดของการแสดงออกย่อย การแสดงออกของ Subexpressions สำหรับการใช้งานในภายหลัง เพื่อให้ตรงกับอักขระเหล่านี้ใช้ /(และ /) |
| - | ตรงกับ Subexpression Zero ก่อนหน้าหรือหลายครั้ง เพื่อให้ตรงกับอักขระ * ให้ใช้ / * |
| - | ตรงกับการแสดงออกของ subexpression ก่อนหน้าหนึ่งครั้งหรือมากกว่า เพื่อให้ตรงกับอักขระ + ให้ใช้ / + |
| - | จับคู่อักขระตัวเดียวยกเว้น Line Break/N เพื่อให้ตรงกับ. ใช้ / |
| - | ทำเครื่องหมายจุดเริ่มต้นของการแสดงออกของวงเล็บ เพื่อให้ตรงกับ [, ใช้ /[ |
| - | ตรงกับศูนย์ย่อยก่อนหน้านี้เป็นศูนย์หรือหนึ่งครั้งหรือบ่งบอกถึงตัวระบุที่ไม่ใช่แบบกำหนด เพื่อให้ตรงกับตัวละคร? |
| - | ทำเครื่องหมายตัวละครถัดไปเป็นตัวละครพิเศษหรือตัวละครดั้งเดิมหรือการอ้างอิงย้อนหลังหรือตัวละคร Octal Escape ตัวอย่างเช่น 'n' ตรงกับตัวละคร 'n' '/n' ตรงกับอักขระใหม่ ลำดับ '//' ตรงกับ/และ '/(' การจับคู่ ( |
| - | ตรงกับตำแหน่งเริ่มต้นของสตริงอินพุตเว้นแต่จะใช้ในนิพจน์วงเล็บเหลี่ยม ณ จุดนี้หมายความว่าไม่ยอมรับการรวบรวมอักขระ เพื่อให้ตรงกับตัวละคร ^ ตัวเองใช้ / ^ |
| - | แท็กจุดเริ่มต้นของการแสดงออกรอบคัดเลือก เพื่อให้ตรงกับ {, ใช้ /{ |
| - | ระบุตัวเลือกระหว่างสองรายการ เพื่อจับคู่ |, ใช้ /| |
มีอักขระที่ไม่ใช่การพิมพ์ที่มีประโยชน์มากมายที่ต้องใช้เป็นครั้งคราว ตารางต่อไปนี้แสดงลำดับหลบหนีที่ใช้เพื่อแสดงอักขระที่ไม่ได้พิมพ์เหล่านี้:
| อักขระ | ความหมาย |
|---|---|
| /c x | ตรงกับอักขระควบคุมที่ระบุโดย x ตัวอย่างเช่น /cm ตรงกับการควบคุม -M หรือการส่งคืนรถ ค่าของ x ต้องเป็นหนึ่งใน AZ หรือ AZ มิฉะนั้นปฏิบัติต่อ c เป็นตัวละคร 'C' ดั้งเดิม |
| /f | จับคู่หน้าแบ่ง เทียบเท่ากับ /x0c และ /cl |
| /n | จับคู่อักขระใหม่ เทียบเท่ากับ /x0a และ /cj |
| /r | จับคู่อักขระคืนรถ เทียบเท่ากับ /x0d และ /cm |
| /s | จับคู่อักขระ Whitespace ใด ๆ รวมถึงช่องว่างแท็บตัวแบ่งหน้า ฯลฯ เทียบเท่ากับ [/f/n/r/t/v] |
| /s | จับคู่อักขระที่ไม่ใช่ไวท์สเปซ เทียบเท่ากับ [^/f/n/r/t/v] |
| /t | จับคู่อักขระแท็บ เทียบเท่ากับ /x09 และ /ci |
| /v | จับคู่แท็บแนวตั้ง เทียบเท่ากับ /x0b และ /ck |
ระยะเวลา (.) ตรงกับอักขระที่พิมพ์หรือไม่พิมพ์เดี่ยวในสตริงยกเว้นการแบ่งบรรทัด (/n) นิพจน์ปกติของ JScript ต่อไปนี้สามารถจับคู่ 'AAC', 'ABC', 'ACC', 'ADC' ฯลฯ และยังสามารถจับคู่ 'A1C', 'A2C', AC 'และ A#C':
/ac/นิพจน์ปกติ VBScript ที่เทียบเท่าคือ:
acหากคุณพยายามจับคู่สตริงที่มีชื่อไฟล์โดยที่ระยะเวลา (.) เป็นส่วนหนึ่งของสตริงอินพุตคุณสามารถนำหน้าระยะเวลาในนิพจน์ทั่วไปด้วยอักขระ backslash (/) เพื่อให้ได้สิ่งนี้ ตัวอย่างเช่นนิพจน์ปกติของ JScript ต่อไปนี้สามารถจับคู่ 'filename.ext':
/filename/.ext/สำหรับ VBScript นิพจน์ที่เทียบเท่าจะเป็นแบบนี้:
filename/.extการแสดงออกเหล่านี้ยังค่อนข้าง จำกัด พวกเขาได้รับอนุญาตให้จับคู่อักขระ ตัว เดียวเท่านั้น ในหลายกรณีมันมีประโยชน์มากสำหรับการจับคู่อักขระพิเศษจากรายการ ตัวอย่างเช่นหากข้อความอินพุตมีชื่อบทที่แสดงด้วยตัวเลขเป็นบทที่ 1 บทที่ 2 และอื่น ๆ คุณอาจต้องการค้นหาชื่อบทเหล่านี้
คุณสามารถใส่อักขระเดี่ยวหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม ([และ]) เพื่อสร้างรายการเพื่อจับคู่ หากอักขระถูกล้อมรอบในวงเล็บรายการจะเรียกว่า นิพจน์วงเล็บ ในวงเล็บเช่นเดียวกับที่อื่นตัวละครธรรมดาแสดงถึงตัวเองนั่นคือพวกเขาจับคู่หนึ่งในตัวเองที่ปรากฏในข้อความอินพุต ตัวละครพิเศษส่วนใหญ่สูญเสียความหมายเมื่อพวกเขาอยู่ในการแสดงออกของวงเล็บ นี่คือข้อยกเว้นบางประการ:
อักขระที่มีอยู่ในนิพจน์วงเล็บตรงกับอักขระตัวเดียวเท่านั้นที่นิพจน์ตัวยึดจะอยู่ในนิพจน์ทั่วไป นิพจน์ปกติของ JScript ต่อไปนี้สามารถจับคู่ 'บทที่ 1', 'บทที่ 2', 'บทที่ 3', 'บทที่ 4' และ 'บทที่ 5':
/Chapter [12345]/เพื่อให้ตรงกับชื่อบทเดียวกันใน VBScript ให้ใช้นิพจน์ต่อไปนี้:
Chapter [12345]โปรดทราบว่าความสัมพันธ์ตำแหน่งระหว่างคำว่า 'บท' และช่องว่างต่อไปนี้และอักขระในวงเล็บได้รับการแก้ไข ดังนั้นนิพจน์วงเล็บจึงใช้เพื่อระบุชุดของอักขระที่ตอบสนองตำแหน่งอักขระเดียวทันทีหลังจากคำว่า 'บท' และพื้นที่ นี่คือตำแหน่งตัวละครที่เก้า
หากคุณต้องการใช้ช่วงแทนที่จะเป็นตัวละครเพื่อแสดงถึงตัวละครที่จะจับคู่คุณสามารถใช้ยัติภังค์เพื่อแยกอักขระเริ่มต้นและจุดสิ้นสุดของช่วง ค่าอักขระของตัวละครแต่ละตัวจะกำหนดลำดับสัมพัทธ์ภายในช่วง นิพจน์ปกติของ JScript ต่อไปนี้มีการแสดงออกของช่วงเทียบเท่ากับรายการวงเล็บที่แสดงด้านบน
/Chapter [1-5]/การแสดงออกของฟังก์ชั่นเดียวกันใน VBSCIPT มีดังนี้:
Chapter [1-5]หากมีการระบุช่วงด้วยวิธีนี้ทั้งค่าเริ่มต้นและค่าสุดท้ายจะรวมอยู่ในช่วงนั้น สิ่งหนึ่งที่ต้องสังเกตคือค่าเริ่มต้นในการเรียงลำดับ Unicode ต้องเป็นก่อนค่าสุดท้าย
หากคุณต้องการรวมยัติภังค์ในนิพจน์วงเล็บคุณต้องใช้หนึ่งในวิธีการต่อไปนี้:
[/-] [-az] [az-] [!--] [!-~]ในทำนองเดียวกันโดยการวาง Caret (^) ที่จุดเริ่มต้นของรายการคุณสามารถค้นหาอักขระทั้งหมดที่ไม่ได้อยู่ในรายการหรือช่วง หาก Caret ปรากฏขึ้นที่อื่นในรายการมันจะตรงกับตัวเองโดยไม่มีความหมายพิเศษใด ๆ นิพจน์ปกติของ JScript ต่อไปนี้ตรงกับชื่อของบทที่มีหมายเลขบทที่มากกว่า 5:
/Chapter [^12345]/สำหรับ vbscript ใช้:
Chapter [^12345]ในตัวอย่างที่แสดงด้านบนนิพจน์จะตรงกับอักขระตัวเลขใด ๆ ที่ตำแหน่งที่เก้ายกเว้น 1, 2, 3, 4 หรือ 5 ดังนั้น 'บทที่ 7' คือการจับคู่และคือ 'บทที่ 9'
นิพจน์ข้างต้นสามารถแสดงด้วยยัติภังค์ (-) สำหรับ jscript:
/Chapter [^1-5]/หรือสำหรับ vbscript มันคือ:
Chapter [^1-5]การใช้งานโดยทั่วไปของนิพจน์วงเล็บคือการระบุการจับคู่กับตัวพิมพ์ใหญ่หรือตัวอักษรตัวอักษรตัวอักษรหรือหมายเลขใด ๆ นิพจน์ jscript ต่อไปนี้ให้การแข่งขันนี้:
/[A-Za-z0-9]/นิพจน์ VBScript ที่เทียบเท่าคือ:
[A-Za-z0-9]