#javascript #regex #character #line #limit
#javascript #регулярное выражение #символ #строка #ограничение
Вопрос:
Я пытаюсь создать регулярное выражение JS, чтобы ограничить количество символов в строке в текстовой области html. В идеале я бы предпочел использовать его как регулярное выражение Javascript, поскольку его проще использовать для нашего механизма проверки формы.
Я хотел бы создать регулярное выражение, которое подтверждает, что строка содержит 10 символов в строке и максимум 3 строки
Идея заключалась бы в проверке строк, подобных следующим:
01234567890
a
b
Первая строка здесь содержит 11 символов, поэтому вся строка должна быть отклонена/
a
b
c
d
Этот текст состоит из 4 строк, поэтому его также следует отклонить.
Я пробовал использовать следующее регулярное выражение, но работает не так, как ожидалось:
^((?:n)?[^n]{0,10}){0,3}$
есть какие-либо подсказки о том, что я делаю неправильно?
Ответ №1:
Вы можете использовать
^.{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>
Комментарии:
1. Очередь редактирования заполнена, поэтому в данный момент не может этого сделать, но, пожалуйста, обратите внимание, что ^^ и $ — это не начало / конец строки, а скорее начало / конец строки. Важное отличие для проверки пользовательского ввода. A и z — это начало / конец строки.
2. @MahNas92 Вы ошибаетесь. Это поток JavaScript. Обратите внимание на вкус ECMAScript.
3. Ах, полностью пропустил это, пришел сюда из поисковой системы и был полностью сосредоточен на самом регулярном выражении. Мой плохой, спасибо, что указали на это!
4. @MahNas92 То, что вы сказали, связано с использованием регулярных выражений Ruby (Onigmo / Oniguruma), где
^
и$
совпадают с началом / концом строки иA
/z
совпадают с началом / концом строки.5. это также верно для Java regex flavor и для Kotlin (который, я думаю, тоже использует Java). Но, похоже, оно также является стандартным (или, по крайней мере, основным потоком). Я не могу найти ни одной ссылки, привязывающей его к определенному виду. Может быть, вы можете помочь мне с таким источником / ссылкой?