regularexpression =/pattern/[switch]
มีสามค่าของสวิตช์นี้: Global Match I: ละเว้นกรณี GI: Global Match + ละเว้นการอ้างอิงภาษา JScript
-
หนึ่งในคุณสมบัติที่สำคัญที่สุดของนิพจน์การอ้างอิงแบบอ้างอิงย้อนหลังคือความสามารถในการจัดเก็บส่วนหนึ่งของรูปแบบที่ประสบความสำเร็จในการจับคู่สำหรับการใช้งานในภายหลัง โปรดจำไว้ว่าการเพิ่มวงเล็บเข้ากับทั้งสองด้านของรูปแบบการแสดงออกปกติหรือรูปแบบบางส่วนจะทำให้การแสดงออกบางส่วนถูกเก็บไว้ในบัฟเฟอร์ชั่วคราว metacharacter ที่ไม่ได้จับตามอง '?:', '? =' หรือ '?!' สามารถใช้เพื่อเพิกเฉยต่อการจัดเก็บของส่วนนี้ของนิพจน์ทั่วไป
แต่ละรายการที่จับได้จะถูกเก็บไว้เป็นเนื้อหาที่พบจากซ้ายไปขวาในรูปแบบการแสดงออกปกติ หมายเลขบัฟเฟอร์ที่เก็บการแข่งขันย่อยเริ่มต้นที่ 1 และมีหมายเลขติดต่อกันมากถึง 99 การแสดงออกย่อย แต่ละบัฟเฟอร์สามารถเข้าถึงได้โดยใช้ '/n' โดยที่ n คือหมายเลขทศนิยมหนึ่งหลักหนึ่งหรือสองหลักที่ระบุบัฟเฟอร์เฉพาะ
การอ้างอิงย้อนหลังหนึ่งในแอพพลิเคชั่นที่ง่ายที่สุดและมีประโยชน์ที่สุดคือความสามารถในการกำหนดตำแหน่งของสองคำที่เหมือนกันในคำ โปรดดูประโยคต่อไปนี้: ค่าใช้จ่ายของน้ำมันเบนซินสูงขึ้นหรือไม่? ตามเนื้อหาที่เป็นลายลักษณ์อักษรประโยคข้างต้นเห็นได้ชัดว่ามีปัญหาของคำซ้ำ ๆ มันจะดีถ้ามีวิธีแก้ไขประโยคโดยไม่ต้องมองหาการทำซ้ำของแต่ละคำ นิพจน์ปกติของ JScript ต่อไปนี้สามารถบรรลุฟังก์ชั่นนี้โดยใช้ subexpression
// B ([AZ]+)/1/B/GI นิพจน์ VBScript เทียบเท่าคือ:
"/B ([AZ]+)/1/B" ในตัวอย่างนี้การแสดงออกของ subexpression คือแต่ละรายการระหว่างวงเล็บ นิพจน์ที่ถูกจับรวมถึงอักขระตัวอักษรหนึ่งตัวหรือมากกว่าคือที่ระบุโดย '[AZ]+' ส่วนที่สองของนิพจน์ปกติคือการอ้างอิงถึงการแข่งขันย่อยที่จับก่อนหน้านี้นั่นคือการเกิดขึ้นครั้งที่สองของคำที่ตรงกับนิพจน์เพิ่มเติม '/1' ใช้เพื่อระบุการส่งครั้งแรก อักขระองค์ประกอบขอบเขตของ Word ตรวจสอบให้แน่ใจว่ามีการตรวจพบคำเฉพาะเท่านั้น ถ้าไม่เป็นวลีเช่น "ออก" หรือ "นี่คือ" จะได้รับการยอมรับอย่างไม่ถูกต้องโดยนิพจน์
ในนิพจน์ jscript, Global Flag ('G') ตามนิพจน์ปกติหมายความว่านิพจน์จะถูกใช้เพื่อค้นหาการจับคู่ให้มากที่สุดเท่าที่จะทำได้ในสตริงอินพุต ความไวของตัวพิมพ์ใหญ่ถูกระบุโดยเครื่องหมายความไวของเคส ('i') ในตอนท้ายของการแสดงออก แท็กหลายบรรทัดระบุการจับคู่ที่อาจเกิดขึ้นที่อาจปรากฏที่ปลายทั้งสองของอักขระใหม่ สำหรับ VBScript แท็กต่าง ๆ ไม่สามารถตั้งค่าในนิพจน์ได้ แต่จะต้องตั้งค่าอย่างชัดเจนโดยใช้คุณสมบัติของวัตถุ Regexp
การใช้นิพจน์ทั่วไปที่แสดงด้านบนรหัส JScript ต่อไปนี้สามารถแทนที่คำเดียวกันที่ปรากฏสองครั้งในสตริงตัวอักษรที่มีคำเดียวกันโดยใช้ข้อมูลการแข่งขันย่อย:
var ss = "ค่าใช้จ่ายของน้ำมันเบนซินสูงขึ้นหรือไม่./n"; var re = // b ([az]+)/1/b/gim; // สร้างรูปแบบการแสดงออกปกติ var rv = ss.replace (re, "$ 1"); // แทนที่สองคำด้วยคำเดียว