2016-08-02 2 views
1

사용자 이름의 일부 특수 문자 ('-)와 공백이있는 사용자 이름의 유효성을 검사해야합니다. 나는 다음과 같은 정규 표현식의 도움으로이를 달성 할 수 있어요 -제한된 문자로 이름을 확인하기위한 정규식 패턴

^[a-zA-z]+([ '-][a-zA-Z]+)*$ 

하지만 사용자가이 특정 정규식에 말 (25)를 입력 할 수있는 최대 문자 수에 제한을 추가 할 수 없습니다입니다. 그래서 위의 정규 표현식에 대해 동일한 작업을 수행하는 방법을 설명 해주십시오. 감사.

답변

4

당신은 26 개 이상의 문자를 허용하지 시작 부분에 부정적 예측을 추가 할 수 있습니다 :

^(?!.{26})[a-zA-Z]+([ '-][a-zA-Z]+)*$ 
    ^^^^  ^

또한 오타 [A-z]을 가지고, 그것은 [A-Z]해야합니다. Difference between regex [A-z] and [a-zA-Z]을 참조하십시오.

negative lookahead (상기 (?!...) 구조체)를 문자열의 시작에서 고정된다 (그것은 바로 ^ 뒤에 위치를 의미하는)와 길이 체크 패턴 부를 소모 오른쪽 주요 구문 분석 전에 한번만 수행된다.

how a negative lookahead works here에 대한 자세한 내용을 볼 수도 있습니다.

+0

나는 당신의 정규 표현식 지식 수준을 모른다. :) [정규 표현식 .info]를 통해 읽는 [regexone.com] (http://regexone.com/)에서만 모든 수업을 제안 할 수 있도록 (http : //www.regular-expressions.info), [regex SO tag description] (훌륭한 온라인 리소스에 대한 많은 링크가있는), [SOge tag description] (http://stackoverflow.com/tags/regex/info) 정규식은 무엇을 의미합니까?] (http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean). 또한, [rexegg.com] (http://rexegg.com)에서 살펴볼 가치가 있습니다. –

+0

게다가 [regex SO docs] (http://stackoverflow.com/documentation/regex/topics)를 참조하십시오. 또한 Jeffrey E. F. Friedl의 "Mastering Regular Expressions"는 정규 표현식을 진지하게 공부하려는 경우 반드시 읽어야합니다. –

+0

난 그냥 Regex에서 초보자이며 뿌리에서 그것을 배우고 싶어 ... 고마워. 링크를 살펴 보겠습니다. –

3

(?=.{1,25}$)을 추가하여 처음부터 미리보기를 추가하여 최대 25자를 찾습니다.

새 정규식이 될 것입니다 : ^(?=.{1,25}$)[a-zA-z]+([ '-][a-zA-Z]+)*$

+0

네거티브 미리보기 솔루션은 더 짧으며 '$'를 삽입했는지 여부를 신경 쓸 필요가 없습니다. –

+0

동의 함. 나는 당신의 해결책을 더 많이, 더 적은 인물처럼 좋아한다. –

+0

@ WiktorStribiżew 정규식에 관해 깊이 연구 할 링크를 공유해 주시겠습니까? –