Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat mengehadkan panjang rentetan input menggunakan ungkapan biasa sambil menyekat aksara khas?

Bagaimanakah saya dapat mengehadkan panjang rentetan input menggunakan ungkapan biasa sambil menyekat aksara khas?

Susan Sarandon
Susan Sarandonasal
2025-01-26 20:09:09241semak imbas

How Can I Limit the Length of an Input String Using a Regular Expression While Restricting Special Characters?

Menggunakan Ungkapan Biasa untuk Mengawal Panjang Rentetan Input dan Aksara Khas

Artikel ini menangani cabaran untuk mengesahkan rentetan input menggunakan ungkapan biasa, khususnya memfokuskan pada mengehadkan panjang rentetan dan mengecualikan aksara khas. Pendekatan biasa menggunakan pengkuantiti pada sauh selalunya gagal menyekat panjang keseluruhan dengan tepat.

Penyelesaian: Pernyataan Pandangan Ke Hadapan Positif

Penyelesaian yang paling berkesan menggunakan pernyataan pandangan ke hadapan yang positif pada permulaan ungkapan biasa:

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

Mari kita pecahkan ungkapan ini:

  • ^: Padan dengan permulaan rentetan.
  • (?=.{1,15}$): Ini adalah pernyataan pandangan ke hadapan yang positif. (?= ... ) ialah sintaks pandang ke hadapan. .{1,15} memadankan mana-mana watak (.) satu hingga lima belas kali ({1,15}). $ sepadan dengan hujung rentetan. Keseluruhan bahagian ini menegaskan bahawa panjang rentetan antara 1 dan 15 aksara tanpa menggunakan sebarang aksara dalam perlawanan.
  • [a-zA-Z0-9]*: Memadankan sifar atau lebih aksara abjad angka.
  • [^$%^&*;:,?()""']*: Memadankan sifar atau lebih aksara yang bukan dalam set aksara khas yang ditentukan.
  • $: Padan dengan hujung rentetan.

Mengapa Pandangan Ke Depan Penting

Menggunakan pengkuantiti secara langsung pada sauh (^ dan $) adalah tidak berkesan kerana ia hanya mengubah suai elemen yang terdahulu. Penegasan yang memandang ke hadapan, bagaimanapun, menyemak keseluruhan panjang rentetan sebelum ungkapan yang lain dinilai, memastikan kawalan panjang yang tepat.

Menangani Isu Berpotensi

  • Baris Baharu: Jika input mungkin mengandungi aksara baris baharu, gantikan . dalam pandangan hadapan dengan [sS] untuk memadankan mana-mana aksara, termasuk baris baharu.
  • Pelarasan Panjang: Pengkuantiti {1,15} dengan mudah melaraskan panjang rentetan maksimum mengikut keperluan.

Pendekatan yang dipertingkatkan ini menyediakan kaedah yang mantap dan tepat untuk mengesahkan rentetan input menggunakan ungkapan biasa, mengehadkan panjang secara berkesan dan mengehadkan aksara khas secara serentak.

Atas ialah kandungan terperinci Bagaimanakah saya dapat mengehadkan panjang rentetan input menggunakan ungkapan biasa sambil menyekat aksara khas?. 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