検索

ホームページ  >  に質問  >  本文

Joi 検証で問題を引き起こす特殊文字

<p>テキスト ボックスの内容を 250 ワードに制限したいと考えています。これを達成するために joi 検証を使用しています。すべての文字 (特殊文字を含む) をカウントし、250 単語のみを許可する必要があります。しかし、次の問題に遭遇しました。 </p> <ol> <li><p>最初の特殊文字が出現するとすぐに、たとえ 3 単語後であっても、「このセクションは 250 文字を超えることはできません」という joi 検証エラーが表示されます。 </p> </li> <li><p>PDF からコンテンツをコピーして貼り付けると、画面がフリーズします。したがって、私の攘夷図式には何か問題があると思います。 </p> </li> </ol> <pre class="brush:php;toolbar:false;">説明 1: Joi.string().regex(/^(([\w\s,."'()-] )\b[\ s,.]*){0,250}$/).options({ language: { string: { regex: {base: 'この部分は 250 文字を超えることはできません' } } }).label("この部分" ),< ;/前> <p>誰か助けてくれませんか? </p>
P粉267791326P粉267791326460日前563

全員に返信(1)返信します

  • P粉916760429

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

    これはうまくいくかもしれません:

    リーリー

    は、[a-zA-Z0-9_] のみに一致する元の正規表現の \w とは異なり、特殊記号 \S は一致します。スペース以外の任意の文字。文字セット \S\s は完全に異なるため、これにより、致命的なバックトラッキングに関連する問題が回避されます。

    ###説明する:###

      \s*
    • の先頭には 0 個以上のスペースがあります。これらはカウントされません。
    • (\S \s )
    • 1 つ以上の非スペース文字とそれに続く 1 つ以上のスペース文字で構成される単語。
    • {0,249}
    • 最大 249 回繰り返します
    • \S*
    • 必要に応じて、末尾に余分な単語を追加します。スペースで終わることはできません。これは 250 番目のワードなので、上記の行数は 250 ではなく 249 である必要があります。
    • これは最後の単語の長さだけを遡るため、最後の単語が非常に長い場合は遅くなる可能性があります。ただし、指数関数的に成長することはできないため、攘夷が崩壊することはありません。

    返事
    0
  • キャンセル返事