Apabila menggunakan RegExp constructor untuk mencipta ungkapan biasa daripada rentetan, adalah penting untuk double-escape khas aksara seperti s yang mewakili watak atau urutan tertentu. Ini kerana aksara sembang ke belakang itu sendiri mempunyai kepentingan istimewa dalam literal rentetan.
Apabila penterjemah menemui garis sengkang terbalik () dalam literal rentetan, ia menganggap watak berikut sebagai watak istimewa. Sebagai contoh, s sepadan dengan aksara ruang putih.
Walau bagaimanapun, jika anda melepasi rentetan sedemikian secara terus tanpa melarikan diri dua kali garisan ke belakang, pembina RegExp mentafsirkan garisan belakang pertama sebagai aksara melarikan diri dalam literal rentetan. Akibatnya, aksara berikut (dalam kes ini) menjadi aksara literal dan corak RegExp yang dimaksudkan tidak dibina dengan betul.
Sebagai contoh, rentetan berikut:
var string = '(\s|^)' + foo;
ditafsirkan sebagai ungkapan biasa dengan corak "(s|^)" di mana s dianggap sebagai aksara ruang literal, bukan corak ruang putih. Untuk membetulkan isu ini, anda perlu melarikan diri dua kali daripada garis miring ke belakang, seperti yang dilihat dalam contoh berikut:
var res = new RegExp('(\s|^)' + foo).test(moo);
Dalam kes ini, ungkapan (s|^)' pertama kali dibuat sebagai rentetan literal, dan watak sengkang terbalik dianggap sebagai sengkang terbalik literal sebelum dihantar kepada pembina RegExp. Ini memastikan bahawa corak RegExp akhir termasuk corak ruang putih yang dimaksudkan.
Untuk menggambarkan lagi kepentingan melarikan diri dua kali, pertimbangkan contoh berikut:
const string = "(\s|^)" + foo; console.log(string); // Output: (\s|^)foo
Perhatikan bahawa apabila anda jangan melarikan diri dua kali dari garis miring ke belakang, s dianggap sebagai aksara literal dalam rentetan literal, dan outputnya ialah rentetan "(s|^)foo" dan bukannya corak ungkapan biasa yang dimaksudkan. Oleh itu, aksara khas dua kali melarikan diri dalam rentetan yang dihantar kepada pembina RegExp adalah penting untuk membina ungkapan biasa yang diingini dengan tepat.
Atas ialah kandungan terperinci Mengapa Saya Perlu Menggandakan Melarikan Diri Segaris Belakang dalam Rentetan Pembina RegExp JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!