Lookarounds เป็นการยืนยันความกว้างเป็นศูนย์ พวกเขาตรวจสอบ regex (ไปทางขวาหรือซ้ายของตำแหน่งปัจจุบัน - ขึ้นอยู่กับล่วงหน้าหรือหลัง) สำเร็จหรือล้มเหลวเมื่อพบการแข่งขัน (ขึ้นอยู่กับว่ามันเป็นบวกหรือลบ) และทิ้งส่วนที่จับคู่ พวกเขาไม่ใช้ตัวอักษรใด ๆ - การจับคู่สำหรับ regex ตามพวกเขา (ถ้ามี) จะเริ่มต้นที่ตำแหน่งเคอร์เซอร์เดียวกัน
อ่านประจำexpressions.infoสำหรับรายละเอียดเพิ่มเติม
ไวยากรณ์:
(?=REGEX_1)REGEX_2
จับคู่เฉพาะในกรณีที่ REGEX_1 ตรงกัน หลังจากการจับคู่ REGEX_1 การจับคู่จะถูกยกเลิกและการค้นหา REGEX_2 จะเริ่มต้นที่ตำแหน่งเดียวกัน
ตัวอย่าง:
(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}
REGEX_1 [a-z0-9]{4}$
ตรงกับตัวอักษรและตัวเลขสี่ตัวตามด้วยท้ายบรรทัด
REGEX_2 [a-z]{1,2}[0-9]{2,3}
ตรงกับตัวอักษรหนึ่งหรือสองตัวตามด้วยตัวเลขสองหรือสามหลัก
REGEX_1 ตรวจสอบให้แน่ใจว่าความยาวของสตริงเป็น 4 จริง ๆ แต่ไม่ใช้อักขระใด ๆ เพื่อให้การค้นหา REGEX_2 เริ่มต้นที่ตำแหน่งเดียวกัน ตอนนี้ REGEX_2 ทำให้แน่ใจว่าสตริงตรงกับกฎอื่น ๆ หากไม่มีการมองล่วงหน้ามันจะจับคู่สายยาวสามหรือห้าเส้น
ไวยากรณ์:
(?!REGEX_1)REGEX_2
จับคู่เฉพาะในกรณีที่ REGEX_1 ไม่ตรงกัน หลังจากตรวจสอบ REGEX_1 การค้นหา REGEX_2 จะเริ่มต้นที่ตำแหน่งเดียวกัน
ตัวอย่าง:
(?!.*\bFWORD\b)\w{10,30}$
ส่วนมองไปข้างหน้าตรวจสอบFWORD
ในในสตริงและล้มเหลวหากพบว่ามัน หากไม่พบFWORD
การค้นหาล่วงหน้าจะสำเร็จและส่วนต่อไปนี้จะตรวจสอบว่าความยาวของสตริงอยู่ระหว่าง 10 ถึง 30 และมีเพียงอักขระคำเท่านั้นa-zA-Z0-9_
การมองด้านหลังนั้นคล้ายกับการมองไปข้างหน้า: มันแค่มองไปข้างหลังตำแหน่งเคอร์เซอร์ปัจจุบัน รสชาติของ regex บางอย่างเช่น javascript ไม่สนับสนุนการยืนยันที่อยู่เบื้องหลัง และรสชาติส่วนใหญ่ที่รองรับ (PHP, Python และอื่น ๆ ) ต้องการให้ส่วนที่ดูล้าหลังมีความยาวคงที่
- กลุ่มอะตอมโดยทั่วไปจะทิ้ง / ลืมโทเค็นถัดไปในกลุ่มเมื่อโทเค็นตรงกัน ตรวจสอบหน้านี้สำหรับตัวอย่างของกลุ่มอะตอม