Javascript Regex to Limiter le nombre de caractères par ligne
J'essaie de créer une expression régulière JS pour limiter le nombre de caractères par ligne dans une zone de texte html. Idéalement, je préférerais l'avoir en tant que Javascript Regex car il est plus facile à utiliser pour notre moteur de validation de formulaire.
Je voudrais créer une expression régulière qui valide qu'une chaîne a 10 caractères par ligne, et un maximum de 3 lignes
L'idée serait de valider des chaînes comme les suivantes:
01234567890
a
b
La première ligne ici a 11 caractères donc la chaîne entière doit être rejetée /
a
b
c
d
Ce texte comporte 4 lignes, il doit donc également être rejeté.
J'ai essayé avec l'expression régulière suivante mais ne fonctionne pas comme prévu:
^((?:\n)?[^\n]{0,10}){0,3}$
des indices sur ce que je fais mal?
Réponses
Vous pouvez utiliser
^.{0,10}(?:\r?\n.{0,10}){0,2}$
Voir la démo regex
Des détails
^- début de chaîne.{0,10}- de zéro à dix caractères autres que les caractères de saut de ligne(?:\r?\n.{0,10}){0,2}- zéro, une ou deux occurrences de\r?\n- Fin de ligne CRLF ou LF.{0,10}- de zéro à dix caractères autres que les caractères de saut de ligne
$- fin de chaîne.
JavaScript:
const valid_rx = /^.{0,10}(?:\r?\n.{0,10}){0,2}$/;
const testFunc = () => {
if(!valid_rx.test(document.all.mytextarea.value))
{
console.log("Please use correct format.");
return false;
}
}
<textarea id="mytextarea" cols="50" rows="10">a
b
c
</textarea>
<button onclick="testFunc()">Click Me</button>