Javascript Regex para limitar el número de caracteres por línea

Aug 26 2020

Estoy tratando de crear una expresión regular JS para limitar la cantidad de caracteres por línea en un área de texto html. Idealmente, preferiría tenerlo como Javascript Regex, ya que es más fácil de usar para nuestro motor de validación de formularios.

Me gustaría crear una expresión regular que valide que una cadena tiene 10 caracteres por línea y un máximo de 3 líneas

La idea sería validar cadenas como las siguientes:

01234567890
a
b

La primera línea aquí tiene 11 caracteres, por lo que se debe rechazar toda la cadena/

a
b
c
d

Este texto tiene 4 líneas por lo que también debe ser rechazado.

He intentado con la siguiente expresión regular pero no funciona como se esperaba:

^((?:\n)?[^\n]{0,10}){0,3}$

alguna pista de lo que estoy haciendo mal?

Respuestas

1 WiktorStribiżew Aug 26 2020 at 19:32

Puedes usar

^.{0,10}(?:\r?\n.{0,10}){0,2}$

Vea la demostración de expresiones regulares

Detalles

  • ^- comienzo de la cadena
  • .{0,10}- de cero a diez caracteres que no sean caracteres de salto de línea
  • (?:\r?\n.{0,10}){0,2}- cero, una o dos ocurrencias de
    • \r?\n- Final de línea CRLF o LF
    • .{0,10}- de cero a diez caracteres que no sean caracteres de salto de línea
  • $- final de la cadena.

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>