Menghadkan Panjang Aksara dalam Ungkapan Biasa
Apabila menggunakan ungkapan biasa untuk memadankan corak tertentu dalam rentetan, selalunya perlu untuk menyekat aksara panjang untuk memastikan padanan yang tepat. Dalam contoh yang disediakan:
var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,<>()?""']*$/
regeks ini sepadan dengan mana-mana rentetan yang terdiri daripada huruf atau digit tanpa sebarang panjang aksara yang terhad. Percubaan untuk mengehadkan panjang aksara kepada 15 menggunakan [^$%^&*;:,<>()?""']*${1,15} mengakibatkan ralat.
Kepada selesaikan isu ini dan kuatkuasakan had aksara, gunakan pandangan hadapan yang dilabuhkan pada permulaan rentetan:
^(?=.{1,15}$)...
Pandangan hadapan ini menyemak sama ada rentetan sepadan dengan 1 hingga 15 aksara tetapi tidak termasuk baris baharu pada penghujung (disebabkan $). Ia mengehadkan panjang keseluruhan rentetan input.
Menggunakan pengkuantiti pada penghujung, seperti [^$%^&*;:,<>()?""']{1,15 }, hanya akan mengehadkan panjang kelas aksara kedua, bukan keseluruhan rentetan.
Untuk rentetan yang mungkin mengandungi urutan baris baharu, gunakan [sS] untuk memadankan mana-mana watak:
^(?=.[\s\S]{1,15}$)...
Ini memastikan sekatan panjang aksara terpakai merentas keseluruhan rentetan, tanpa mengira baris baharu.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Panjang Watak dalam Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!