Javascript Regex zur Begrenzung der Anzahl der Zeichen pro Zeile
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
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>