Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengehadkan Panjang Aksara dalam Ungkapan Biasa?

Bagaimana untuk Mengehadkan Panjang Aksara dalam Ungkapan Biasa?

DDD
DDDasal
2025-01-26 20:14:15952semak imbas

How to Limit the Length of Characters in a Regular Expression?

Kaedah penambahbaikan had panjang aksara ungkapan biasa

Ungkapan biasa asal anda tidak meletakkan had pada panjang aksara:

<code>var test =  /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*$/</code>

Untuk mengehadkan panjang aksara kepada 15, anda cuba mengubah suai ungkapan sebagai:

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

Ini akan menimbulkan ralat kerana pengkuantiti tidak boleh digunakan terus pada sauh. Cara yang betul untuk mengehadkan panjang rentetan input adalah dengan menggunakan penegasan pandangan pada permulaan:

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

Pernyataan yang memandang ke hadapan ini memastikan bahawa rentetan input sepadan dengan julat aksara yang ditentukan dan panjangnya antara 1 dan 15 aksara, dengan berkesan menguatkuasakan had panjang aksara.

Berbanding dengan menggunakan pengkuantiti terhad pada penghujung (seperti {1,15}), pendekatan pandang ke hadapan membolehkan anda mengehadkan panjang keseluruhan rentetan input. Pengkuantiti digunakan pada subcorak pernyataan pandangan, memastikan ia sepadan dengan bilangan aksara yang diperlukan dari permulaan rentetan.

Berikut ialah beberapa perkara lain yang perlu diberi perhatian:

    Subcorak
  • [a-zA-Z0-9]* sepadan dengan jujukan huruf atau nombor dengan sebarang panjang. Ia bersamaan dengan subcorak (a-z|A-Z|0-9)* yang digunakan dalam ungkapan asal anda.
  • Pernyataan pandangan ke hadapan yang positif (?=.{1,15}$) Gunakan penambat $ untuk menegaskan bahawa bilangan aksara yang ditentukan mesti berada di hujung rentetan.
  • Kaedah ini berfungsi dengan ECMAScript dan perisa ekspresi biasa yang lain, seperti Python. Walau bagaimanapun, dalam Python anda perlu menggunakan A dan Z sauh bukannya ^ dan $.

Selain itu, jika rentetan input anda mungkin mengandungi baris baharu, anda boleh menggunakan [sS] binaan ungkapan biasa aksara arbitrari mudah alih:

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

Ini memastikan bahawa baris baharu turut disertakan dalam had panjang aksara.

Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan 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