Rumah >hujung hadapan web >tutorial js >Mengapa Ujian RegEx JavaScript Gagal?

Mengapa Ujian RegEx JavaScript Gagal?

Barbara Streisand
Barbara Streisandasal
2024-10-18 13:27:02541semak imbas

Why Does JavaScript RegEx Testing Fail?

Pengujian RegEx JavaScript Gagal: Menyahkod Isu

Dalam bidang JavaScript, pembangun menghadapi dilema yang membingungkan: corak ekspresi biasa mereka secara konsisten menghasilkan keputusan palsu untuk sebarang input. Apabila berkongsi kod mereka dengan editor dalam talian, ia secara mengejutkan berfungsi seperti yang dimaksudkan. Pemeriksaan yang lebih dekat mendedahkan puncanya: pengendalian garisan belakang yang tidak betul.

Pada asalnya, pembangun mentakrifkan ungkapan biasa sebagai rentetan:

<code class="javascript">var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");</code>

Walau bagaimanapun, apabila membina ungkapan biasa daripada rentetan, ia adalah penting untuk menggandakan setiap aksara garis miring ke belakang. Ini kerana penghurai mentafsir rentetan secara literal dan menggunakan peraturannya sendiri untuk garis miring ke belakang, menghasilkan ungkapan yang diubah suai yang berbeza daripada corak yang dimaksudkan.

Dengan mengabaikan penggandaan garis miring ke belakang, corak tersebut menjadi:

^(0[1-9]|1[0-2])/d{4}$

Sebaliknya, garis miring ke belakang hendaklah digandakan dalam rentetan:

<code class="javascript">var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");</code>

Pengubahsuaian ini memastikan penghurai mentafsir corak dengan betul, membolehkannya mengecam format yang diingini selama berbulan-bulan dan tahun.

Selain itu, adalah wajar mempertimbangkan menggunakan sintaks ungkapan biasa secara langsung:

<code class="javascript">var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;</code>

Ini menghapuskan keperluan untuk interpolasi rentetan dan menyediakan sintaks yang lebih intuitif untuk menyatakan corak.

Atas ialah kandungan terperinci Mengapa Ujian RegEx JavaScript Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn