Mengapa Melarikan Diri Rentetan Dua Kali Diperlukan untuk RegExp Constructor
Apabila mencipta ungkapan biasa menggunakan RegExp constructor, satu aksara melarikan diri () ialah tidak mencukupi untuk aksara khas seperti s (ruang putih). Melarikan diri berganda () diperlukan untuk memastikan aksara ini ditafsirkan dengan betul.
Keperluan ini timbul kerana rentetan yang dihantar kepada pembina RegExp pada mulanya diproses sebagai literal rentetan biasa. Dalam literal rentetan, bertindak sebagai watak melarikan diri, membenarkan aksara khas seperti s disertakan secara literal. Walau bagaimanapun, apabila membina ungkapan biasa, aksara melarikan diri pertama digunakan semasa proses penghuraian literal rentetan.
Pertimbangkan contoh berikut:
const foo = "foo"; const string = '(\s|^)' + foo; console.log(string);
Dalam contoh ini, ungkapan biasa yang dimaksudkan ialah (s|^) diikuti dengan nilai foo. Walau bagaimanapun, pelarian tunggal sebelum s digunakan oleh penghuraian literal rentetan. Ini mengakibatkan rentetan (s|^) digabungkan dengan foo, yang bukan ungkapan biasa yang sah.
Untuk mengelakkan salah tafsir ini, pelarian berganda () digunakan. Watak melarikan diri pertama digunakan oleh penghuraian literal rentetan, manakala watak melarikan diri kedua menunjukkan bahawa watak berikut adalah sebahagian daripada ungkapan biasa dan harus ditafsirkan sedemikian.
const foo = "foo"; const string = '(\s|^)\' + foo; console.log(string);
Dalam kes ini, watak yang dimaksudkan ungkapan biasa (s|^) diikuti dengan foo dibina dengan betul. Melarikan diri berganda memastikan bahawa aksara khas dianggap sebagai sebahagian daripada ungkapan biasa dan bukan sebagai sebahagian daripada rentetan literal.
Atas ialah kandungan terperinci Mengapa Saya Perlu Melarikan Diri Rentetan Dua Kali Apabila Menggunakan RegExp Constructor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!