문자 수를 10으로 제한하는 정규식


189

소문자와 최대 10자를 허용 하는 정규식 을 작성하려고합니다 . 내가 지금까지 가진 것은 다음과 같습니다.

pattern: /^[a-z]{0,10}+$/ 

작동하지 않거나 컴파일되지 않습니다. 나는 소문자를 허용하는 작동하는 것을 가지고 있었다.

pattern: /^[a-z]+$/ 

그러나 문자 수를 10으로 제한해야합니다.


4
{}와 +는 같은 일 (카운팅)을 수행하므로 중복되므로 오류가 발생합니다.
PhiLho

1
/ ^ [az] {0,10} + $ /에서 '+'를 삭제해야합니다. / ^ [az] {0,10} $ /이어야합니다.
SO 사용자 :

1
패턴 ^[a-z]{0,10}+$은 일부 언어에서 컴파일되며 주목할만한 언어는 Java, Perl (5.10+), PHP, Ruby (1.9+)입니다. 자세한 내용은 이 페이지 를 참조하십시오 .
Jerry

lookahead를 통한 범용 솔루션 참조 : 정규 표현식에서 문자 길이 제한
Vadzim

답변:


356

중괄호를 사용하여 발생 횟수를 제어 할 수 있습니다. 예를 들어, 이것은 0에서 10을 의미합니다.

/^[a-z]{0,10}$/

옵션은 다음과 같습니다.

  • {3} 정확히 3 회 발생;
  • {6,} 6 번 이상 발생;
  • {2,5} 2-5 개의 발생.

참고 항목 정규 표현식 참조 .

닫는 중괄호 뒤에 식에 +가 있었으므로 오류가 발생했습니다.


엠버와 크롬 개발 도구에서 나는 또는 ^같은 이름의 요청에 대해서만 속성 일치 요청 을 생략 하고 $ 기호를 포함해야했습니다12345678
Devin G Rhode

11

/^[a-z]{0,10}$/작동해야합니다. /^[a-z]{1,10}$/당신은 적어도 하나의 문자와 일치 할 경우, 같은 /^[a-z]+$/않습니다.


9

문자열 끝에 욕심 매칭을 추가하는 것이 도움이 될 수 있으므로 10보다 큰 문자열을 허용하면 정규 표현식은 처음 10 자까지만 반환합니다. /^[a-z0-9]{0,10}$?/


8

사용중인 프로그램에 따라 다릅니다. 다른 프로그램 ( Emacs , vi , sedPerl )은 약간 다른 정규식을 사용합니다. 이 경우 첫 번째 패턴에서 마지막 "+"를 제거해야한다고합니다.


7
grep '^[0-9]\{1,16\}' | wc -l

정확한 일치 횟수를 가진 카운트를 제한합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.