Menghadkan Panjang Input dalam Ungkapan Biasa
Ekspresi biasa menyediakan cara yang berkesan untuk memadankan corak dalam teks dan selalunya perlu menyekat panjang daripada aksara yang dipadankan. Walaupun ini mungkin kelihatan mudah, ia boleh mencabar untuk menggunakan pengkuantiti dengan betul. Dalam artikel ini, kami akan meneroka sebab mengehadkan pengkuantiti pada penghujung corak tidak berfungsi dan menyediakan pendekatan alternatif menggunakan pandangan ke hadapan.
Pertimbangkan ungkapan biasa berikut:
/(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*$/
Ungkapan ini sepadan dengan jujukan huruf, digit dan aksara lain, tetapi ia tidak mengehadkan jumlah panjang rentetan input. Untuk mengehadkan aksara kepada 15, kami boleh mencuba:
/(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*${1,15}/
Walau bagaimanapun, ini akan mengakibatkan ralat. Sebabnya ialah pengkuantiti terpakai pada subpola serta-merta di sebelah kirinya, bukan keseluruhan corak. Dalam kes ini, pengkuantiti {1,15} digunakan pada kelas aksara kedua, mengehadkan panjangnya kepada 1 hingga 15 aksara, tetapi bukan panjang rentetan keseluruhan.
Sebaliknya, cara yang betul untuk mengehadkan panjang input ialah menggunakan pandangan ke hadapan yang dilabuhkan pada permulaan rentetan:
^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()""']*$
Pandangan ini memastikan keseluruhan rentetan input sepadan dengan panjang yang diingini sekatan.
Nota: Pandangan hadapan ialah penegasan lebar sifar yang tidak menggunakan sebarang aksara. Ia hanya mengembalikan benar atau salah berdasarkan corak seterusnya.
Dalam kes di mana input boleh mengandungi baris baharu, anda boleh menggunakan kelas aksara [sS] mudah alih untuk memadankan mana-mana aksara, termasuk baris baharu:
^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()""']*$
Dengan menggunakan lookaheads, kami boleh mengehadkan panjang rentetan input dengan berkesan sambil mengekalkan tingkah laku padanan corak yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Panjang Input dalam Ungkapan Biasa Menggunakan Lookaheads?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!