2017-04-19 1 views
0

나는이 정규 표현식이 있습니다 ^[a-zA-Z]\s{3,16}$정규식 공백 문자

내가 원하는 것은, 예를 들어, 어떤 공간에 어떤 이름과 일치하는 것입니다, 존 스미스와 그 3 ~ 16 자 포함 ..

무엇 오전 내가 잘못하고있어?

+5

현재 표현식은 단일 문자 'a'와 'z'(대문자 또는 소문자)와 일치하며 그 뒤에 3-16 개의 공백이옵니다. 한정어는'\ s'에만 적용됩니다. –

+0

정규식 디버깅을 시도 할 때 https://www.debuggex.com/r/GFfROJSrQEMa2mta와 같은 과거 사이트를 보지 마십시오. 문제를 매우 빨리 찾을 수 있습니다. – Shadow

+0

@shadow 그것은 멋진 도구입니다. 나는 또한 regex101.com을 좋아한다. 그것은 완전 무료입니다. – c1moore

답변

1

배경

는 몇 가지가 여기에주의하는 것이 있습니다. 먼저 한정 기호 (이 경우 {3,16})는 마지막 정규식 토큰에만 적용됩니다. 그래서 현재의 정규 표현식이 실제로 말하는 것은 하나의 알파벳 문자 (대소 문자를 구별하지 않는)와 3 ~ 16 개의 공백 문자 (예 : 공백, 탭 등)가있는 문자열을 매치하는 것입니다. "

둘째로, 이름이 일 수 있고은 두 부분 이상 (중간 이름, "De La Cruz"와 같은 특정 민족 이름)이거나 악센트 부호가있는 모음과 같은 특수 문자를 포함 할 수 있습니다. 이것이 프로그램에서 고려해야 할 사항인지 고려해야합니다. 이러한 것들은 중요하며 어떤 실제 응용 프로그램에 대해 고려해야합니다.

가정 및

지금,하자 답변은 당신은 단지 첫 번째 이름, 성 및 공간 구성 이름에 특정 형식을 원하는 가정합니다. 또한 간단한 ASCII 문자 (예 : 특수 문자 또는 악센트 부호가있는 문자) 만 필요하다고 가정 해 보겠습니다. 또한 성과 이름은 대문자와 소문자로 시작해야합니다. 그 외에도 이름의 개별 부분 길이에는 제한이 없습니다. 이 경우 다음 정규식 트릭을 할 것입니다 :

^(?=.{3,16}$)[A-Z][a-z]+ [A-Z][a-z]+$ 

노트

첫 번째 토큰을 ^ 문자가 positive lookahead을 소위 후. 기본적으로 앞으로 긍정적 인 모양은 문자열을 일치하는 커서의 위치를 ​​실제로 이동하지 않고 (?= 개구부와 ) 닫는 사이의 정규식과 일치합니다.

알림 보통에만 (공백) 만 남기 때문에 \s 토큰을 제거했습니다. 탭과 기타 공백이 있으면 그 공백을 \s 토큰으로 바꿀 수 있습니다.

또한 은 대문자와 소문자로 시작하는으로 시작해야한다는 제한이 추가되었습니다.

는 원유 영어 번역

에 대한 이해를 돕기 위해 여기에 정규 표현식이 정말로 무엇을하고 있는지 간단한 영어 번역입니다. 기울임 꼴로 표시된 부분은 정규식의 영문 번역본의 첫 번째 부분에서 복사됩니다.

"3-16 문자가와 다음에 하나의 공백 알파벳 문자가 대문자 알파벳 문자가 하나 이상의 다음에 하나 이상의 (+) 다음에 대문자 알파벳 문자로 시작하는 모든 문자열을 일치 (+) 알파벳 문자이며 소문자로 끝납니다. "

도구

내가 도전 정규식을 해결하려고 할 때 사용하려는 도구의 몇 가지 있습니다. 아래 나열된 순서대로 나열되어 있습니다 :

편집/업데이트

당신은 당신이 자바 스크립트에서 정규식을 사용하여 귀하의 의견에 언급했다. JavaScript는 정규식을 둘러싼 슬래시를 사용하여 정규식을 결정합니다. 이 간단한 경우에는 정규 표현식을 사용하여 문자열을 일치시키는 두 가지 옵션이 있습니다.

먼저,

"John Smith".match(/^(?=.{3,16}$)[A-Z][a-z]+ [A-Z][a-z]+$/); 

둘째를 다음과 같이 String의 일치 방법을 사용 정규식을 만들고 해당 test() 방법을 사용합니다. 예를 들어,

/^(?=.{3,16}$)[A-Z][a-z]+ [A-Z][a-z]+$/.test("John Smith"); 

후자는 단순히 true 또는 false는 정규식 실제로 문자열과 일치 여부에 따라 반환으로 원하는 아마.

+0

모든 설명을 해주셔서 감사합니다. 이제는 명확하게 말씀 드리겠습니다. 제 프로그램에서 올바르게 작동합니다. 고맙습니다 –