Javascript Regex zur Begrenzung der Anzahl der Zeichen pro Zeile

Aug 26 2020

Ich versuche, einen regulären JS-Ausdruck zu erstellen, um die Anzahl der Zeichen pro Zeile in einem HTML-Textbereich zu begrenzen. Idealerweise würde ich es vorziehen, es als Javascript Regex zu verwenden, da es für unsere Formularvalidierungs-Engine einfacher zu verwenden ist.

Ich möchte einen regulären Ausdruck erstellen, der bestätigt, dass eine Zeichenfolge 10 Zeichen pro Zeile und maximal 3 Zeilen enthält

Die Idee wäre, Zeichenfolgen wie die folgenden zu validieren:

01234567890
a
b

Die erste Zeile hier hat 11 Zeichen, daher sollte die gesamte Zeichenfolge abgelehnt werden /

a
b
c
d

Dieser Text hat 4 Zeilen und sollte daher ebenfalls abgelehnt werden.

Ich habe es mit dem folgenden regulären Ausdruck versucht, aber es funktioniert nicht wie erwartet:

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

Irgendwelche Hinweise darauf, was ich falsch mache?

Antworten

1 WiktorStribiżew Aug 26 2020 at 19:32

Sie können verwenden

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

Siehe die Regex-Demo

Einzelheiten

  • ^ - Beginn der Zeichenfolge
  • .{0,10} - null bis zehn Zeichen außer Zeilenumbruchzeichen
  • (?:\r?\n.{0,10}){0,2} - Null, ein oder zwei Vorkommen von
    • \r?\n - CRLF- oder LF-Zeilenende
    • .{0,10} - null bis zehn Zeichen außer Zeilenumbruchzeichen
  • $ - Ende der Zeichenfolge.

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>