Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menguatkuasakan Had Panjang Aksara dalam Ungkapan Biasa?

Bagaimanakah Saya Boleh Menguatkuasakan Had Panjang Aksara dalam Ungkapan Biasa?

Patricia Arquette
Patricia Arquetteasal
2025-01-26 19:56:10363semak imbas

How Can I Enforce Character Length Limits in Regular Expressions?

menguatkuasakan panjang aksara dalam ekspresi biasa

Ekspresi biasa sering memerlukan sekatan panjang. Tanpa mereka, regex akan memadankan rentetan panjang apa pun. Walaupun kuantum kelihatan seperti penyelesaian (mis.,

), mereka tidak berfungsi secara langsung pada keseluruhan rentetan. Ini kerana kuantifi hanya menjejaskan elemen yang terdahulu. {1,15}

Sebagai contoh, percubaan ini gagal:

<code class="language-javascript">var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,?()""']*${1,15}/ // Error!</code>

Penyelesaian Lookahead

Pendekatan yang betul menggunakan pernyataan Lookahead yang positif:

<code class="language-javascript">^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>

Memahami Lookahead

adalah kunci. Lookahead positif ini menegaskan bahawa keseluruhan rentetan (dari awal (?=.{1,15}$) hingga akhir ^) mengandungi antara 1 dan 15 aksara ($). Ia .{1,15} tidak menggunakan mana -mana aksara; Ia hanya memeriksa keadaan. Selebihnya regex kemudian sepadan dengan aksara yang dibenarkan dalam kekangan panjang itu. [a-zA-Z0-9]*[^$%^&*;:,?()""']*$

Mengendalikan Newlines

Jika rentetan anda mungkin termasuk aksara baru, gunakan kelas watak yang lebih mantap untuk memadankan mana -mana watak, termasuk garis baru:

<code class="language-javascript">^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>

sepadan dengan mana-mana Whitespace atau White-Whitespace Watak. Ini memastikan pemeriksaan panjang berfungsi dengan betul walaupun dengan input multiline. Ini menyediakan kaedah yang boleh dipercayai untuk menguatkuasakan had panjang aksara dalam ungkapan biasa. [sS]

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguatkuasakan Had Panjang Aksara dalam Ungkapan Biasa?. 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