줄당 문자 수를 제한하는 Javascript Regex

Aug 26 2020

html 텍스트 영역에서 줄당 문자 수를 제한하기 위해 JS 정규식을 만들려고합니다. 이상적으로는 양식 유효성 검사 엔진에 사용하기 더 쉽기 때문에 Javascript Regex로 사용하는 것이 좋습니다.

문자열에 한 줄에 10 자, 최대 3 줄이 있는지 확인하는 정규식을 만들고 싶습니다.

아이디어는 다음과 같은 문자열의 유효성을 검사하는 것입니다.

01234567890
a
b

여기의 첫 번째 줄에는 11 개의 문자가 있으므로 전체 문자열을 거부해야합니다.

a
b
c
d

이 텍스트는 4 줄로되어 있으므로 거부되어야합니다.

다음 정규식으로 시도했지만 예상대로 작동하지 않습니다.

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

내가 뭘 잘못하고 있는지에 대한 단서가 있습니까?

답변

1 WiktorStribiżew Aug 26 2020 at 19:32

당신이 사용할 수있는

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

참고 항목 정규식 데모

세부

  • ^ -문자열 시작
  • .{0,10} -줄 바꿈 문자 이외의 0-10 자
  • (?:\r?\n.{0,10}){0,2} -0 개, 1 개 또는 2 개의 발생
    • \r?\n -CRLF 또는 LF 줄 끝
    • .{0,10} -줄 바꿈 문자 이외의 0-10 자
  • $ -문자열 끝.

자바 스크립트 :

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>