Rumah >hujung hadapan web >tutorial js >Mengapa Corak Regex Saya Berfungsi dengan Bendera \'u\' tetapi Bukan Bendera \'v\'?
Anda telah menemui amaran konsol mengenai corak regex dengan bendera 'u' sah tetapi tidak dengan bendera 'v'. Mari kita mendalami isu ini.
Dalam HTML, bendera 'v' ditambah secara automatik apabila menyusun objek RegExp dalam atribut corak. Bendera ini menguatkuasakan sekatan yang lebih ketat ke atas watak yang melarikan diri dalam corak regex.
Satu perbezaan utama antara bendera 'u' dan 'v' ialah layanan '- ' watak. Dengan bendera 'u', aksara '-' boleh digunakan pada akhir kelas aksara sebagai aksara literal. Walau bagaimanapun, dengan bendera 'v', yang membenarkan penolakan dan persilangan kelas aksara, aksara '-' literal mesti dilepaskan.
regex yang disediakan mempunyai '- ' aksara pada akhir kelas aksara: [a-zA-Z0-9 _.-]. Untuk menjadikan corak ini sah dengan bendera 'v', anda boleh melarikan diri daripada aksara '-' dengan garis miring ke belakang: [a-zA-Z0-9 _.-].
Berikut ialah perbandingan tingkah laku dengan dan tanpa melepaskan watak '-':
<code class="js">console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("[email protected]")); // true, using 'u' flag console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // false, using 'v' flag without escaping '-' console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // true, using 'v' flag with escaped '-'</code>
Artikel ini menerangkan perbezaan tingkah laku antara bendera 'u' dan 'v' untuk corak regex apabila digunakan dengan atribut corak dalam HTML. Ia menyerlahkan keperluan untuk melepaskan aksara '-' apabila menggunakan bendera 'v' untuk mengelakkan corak tidak sah.
Atas ialah kandungan terperinci Mengapa Corak Regex Saya Berfungsi dengan Bendera \'u\' tetapi Bukan Bendera \'v\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!