Javascript Regex для ограничения количества символов в строке
Я пытаюсь создать регулярное выражение JS, чтобы ограничить количество символов в строке в текстовой области html. В идеале я бы предпочел иметь его как Javascript Regex, так как его проще использовать для нашего механизма проверки формы.
Я хотел бы создать регулярное выражение, которое проверяет, что строка имеет 10 символов на строку и не более 3 строк.
Идея заключалась бы в проверке таких строк, как следующие:
01234567890
a
b
Первая строка здесь состоит из 11 символов, поэтому вся строка должна быть отклонена /
a
b
c
d
Этот текст состоит из 4 строк, поэтому его также следует отклонить.
Я пробовал использовать следующее регулярное выражение, но не работает должным образом:
^((?:\n)?[^\n]{0,10}){0,3}$
какие-нибудь подсказки о том, что я делаю не так?
Ответы
Ты можешь использовать
^.{0,10}(?:\r?\n.{0,10}){0,2}$
См. Демонстрацию регулярного выражения
Подробности
^- начало строки.{0,10}- от нуля до десяти символов, кроме символов разрыва строки(?:\r?\n.{0,10}){0,2}- ноль, одно или два появления\r?\n- Окончание строки CRLF или LF.{0,10}- от нуля до десяти символов, кроме символов разрыва строки
$- конец строки.
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>