Javascript Regex para limitar o número de caracteres por linha
Estou tentando criar uma Expressão Regular JS para limitar a quantidade de caracteres por linha em uma área de texto html. Idealmente, eu preferiria tê-lo como um Javascript Regex, pois é mais fácil de usar para nosso mecanismo de validação de formulário.
Gostaria de criar uma expressão regular que valide que uma string possui 10 caracteres por linha e no máximo 3 linhas
A ideia seria validar strings como as seguintes:
01234567890
a
b
A primeira linha aqui tem 11 caracteres, então toda a string deve ser rejeitada/
a
b
c
d
Este texto tem 4 linhas, portanto também deve ser rejeitado.
Eu tentei com o seguinte regex, mas não está funcionando como esperado:
^((?:\n)?[^\n]{0,10}){0,3}$
alguma pista sobre o que estou fazendo de errado?
Respostas
Você pode usar
^.{0,10}(?:\r?\n.{0,10}){0,2}$
Veja a demonstração de regex
Detalhes
^- início da corda.{0,10}- zero a dez caracteres, exceto caracteres de quebra de linha(?:\r?\n.{0,10}){0,2}- zero, uma ou duas ocorrências de\r?\n- Fim de linha CRLF ou LF.{0,10}- zero a dez caracteres, exceto caracteres de quebra de linha
$- fim da corda.
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>