Caractères spéciaux causant des problèmes avec la validation Joi
P粉267791326
2023-08-31 09:52:18
<p>Je souhaite limiter le contenu de la zone de texte à 250 mots. J'utilise la validation Joi pour y parvenir. Il doit compter tous les caractères (y compris les caractères spéciaux) et n'autoriser que 250 mots. Mais j'ai rencontré le problème suivant. </p>
<ol>
<li><p>Dès que le premier caractère spécial apparaît, même après 3 mots, j'obtiens une erreur de validation joi disant "Cette section ne peut pas dépasser 250 caractères". </p>
≪/li>
<li><p>Lorsque je copie et colle le contenu d'un PDF, mon écran se fige. Je pense donc qu'il y a quelque chose qui ne va pas avec mon schéma Joi. </p>
≪/li>
</ol>
<pre class="brush:php;toolbar:false;">description1 : Joi.string().regex(/^(([ws,."'()-]+)b[s,.] *){0,250}$/).options({ langue : { string : { regex : { base : 'Cette partie ne peut pas dépasser 250 caractères' } } } }).label("Cette partie"),< ;
<p>Quelqu’un peut-il m’aider ? </p>
Cela pourrait fonctionner :
est complètement différent de la simple correspondance
[a-zA-Z0-9_]
的w
不同,特殊符号S
匹配任何非空格字符。因为字符集S
和s
dans votre regex d'origine, cela devrait donc éviter tout problème lié à un retour en arrière catastrophique.Explication :
s*
Zéro ou plusieurs espaces au début. Ceux-ci ne sont pas comptés.(S+s+)
Un mot composé d'un ou plusieurs caractères non-espaces suivis d'un ou plusieurs caractères espace.{0,249}
Répétez jusqu'à 249 foisS*
Ajoutez éventuellement un mot supplémentaire à la fin, qui ne doit pas se terminer par un espace. Il s'agit du 250ème mot, le nombre de lignes ci-dessus doit donc être de 249 et non de 250.Cela ne remonte que la longueur du dernier mot, donc peut être lent si le dernier mot est très long. Cependant, la croissance ne peut pas être exponentielle et ne devrait donc pas entraîner l’effondrement de Joi.