Joi 検証で問題を引き起こす特殊文字
P粉267791326
P粉267791326 2023-08-31 09:52:18
0
1
494
<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粉267791326
P粉267791326

全員に返信(1)
P粉916760429

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

リーリー

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

###説明する:###

    \s*
  • の先頭には 0 個以上のスペースがあります。これらはカウントされません。
  • (\S \s )
  • 1 つ以上の非スペース文字とそれに続く 1 つ以上のスペース文字で構成される単語。
  • {0,249}
  • 最大 249 回繰り返します
  • \S*
  • 必要に応じて、末尾に余分な単語を追加します。スペースで終わることはできません。これは 250 番目のワードなので、上記の行数は 250 ではなく 249 である必要があります。
  • これは最後の単語の長さだけを遡るため、最後の単語が非常に長い場合は遅くなる可能性があります。ただし、指数関数的に成長することはできないため、攘夷が崩壊することはありません。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!