Rumah  >  Soal Jawab  >  teks badan

Watak khas yang menyebabkan masalah dengan pengesahan Joi

<p>Saya mahu mengehadkan kandungan dalam kotak teks kepada 250 patah perkataan. Saya menggunakan pengesahan joi untuk mencapai ini. Ia harus mengira semua aksara (termasuk aksara khas) dan hanya membenarkan 250 patah perkataan. Tetapi saya menghadapi masalah berikut. </p> <ol> <li><p>Sebaik sahaja aksara khas pertama muncul, walaupun selepas 3 perkataan, saya mendapat ralat pengesahan joi mengatakan "Bahagian ini tidak boleh melebihi 250 aksara". </p> </li> <li><p>Apabila saya menyalin dan menampal kandungan daripada PDF, skrin saya menjadi beku. Jadi saya rasa ada sesuatu yang tidak kena dengan skema joi saya. </p> </li> </ol> <pre class="brush:php;toolbar:false;">description1: Joi.string().regex(/^(([ws,."'()-]+)b[s,.] *){0,250}$/).options({ bahasa: { string: { regex: { base: 'Bahagian ini tidak boleh melebihi 250 aksara' } } } }).label("Bahagian ini"),< ; <p>Bolehkah sesiapa membantu saya? </p>
P粉267791326P粉267791326385 hari yang lalu496

membalas semua(1)saya akan balas

  • P粉916760429

    P粉9167604292023-09-01 00:35:05

    Ini mungkin berkesan:

    /^\s*(?:\S+\s+){0,249}\S*\s*$/
    

    adalah berbeza sama sekali daripada hanya memadankan [a-zA-Z0-9_]w不同,特殊符号S匹配任何非空格字符。因为字符集Ss dalam regex asal anda, jadi ini harus mengelakkan sebarang isu yang berkaitan dengan penjejakan belakang bencana.

    Penjelasan:

    • s* Sifar atau lebih ruang pada permulaan. Ini tidak dikira.
    • (S+s+) Perkataan yang terdiri daripada 1 atau lebih aksara bukan ruang diikuti dengan 1 atau lebih aksara ruang.
    • {0,249} Ulang sehingga 249 kali
    • S* Tambah perkataan tambahan pada penghujungnya, yang tidak sepatutnya berakhir dengan ruang. Ini adalah perkataan ke-250, jadi bilangan baris di atas mestilah 249 bukan 250.

    Ini hanya mengundurkan panjang perkataan terakhir, jadi mungkin lambat jika perkataan terakhir sangat panjang. Walau bagaimanapun, pertumbuhan tidak boleh eksponen, jadi ia tidak sepatutnya menyebabkan Joi runtuh.

    balas
    0
  • Batalbalas