Regex Javascript per limitare il numero di caratteri per riga

Aug 26 2020

Sto cercando di creare un'espressione regolare JS per limitare la quantità di caratteri per riga in un'area di testo html. Idealmente preferirei averlo come Javascript Regex in quanto è più facile da usare per il nostro motore di convalida dei moduli.

Vorrei creare un'espressione regolare che convalidi che una stringa ha 10 caratteri per riga e un massimo di 3 righe

L'idea sarebbe quella di convalidare stringhe come le seguenti:

01234567890
a
b

La prima riga qui ha 11 caratteri quindi l'intera stringa dovrebbe essere rifiutata/

a
b
c
d

Questo testo ha 4 righe quindi dovrebbe anche essere rifiutato.

Ho provato con la seguente regex ma non funziona come previsto:

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

qualche indizio su cosa sto facendo male?

Risposte

1 WiktorStribiżew Aug 26 2020 at 19:32

Puoi usare

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

Guarda la demo regex

Particolari

  • ^- inizio della stringa
  • .{0,10}- da zero a dieci caratteri diversi dai caratteri di interruzione di riga
  • (?:\r?\n.{0,10}){0,2}- zero, una o due occorrenze di
    • \r?\n- Fine riga CRLF o LF
    • .{0,10}- da zero a dieci caratteri diversi dai caratteri di interruzione di riga
  • $- fine della stringa.

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>