2014-06-10 3 views
0

제 이름은 vic, Victor, Victoria, victor, Victoria, VICKY, VICTOR 중 하나와 일치하는 정규 표현식을 만드는 것입니다. 빅토리아, 빅, VIC특정 단어로 시작하는 방법은 무엇입니까?

그래서 나는이

(빅 [az]와 ) 작성 | (피해자 [AZ]) | (VIC [AZ] *)는

내가 가진 문제 생각을 . 예를 들어 "Hello aVictoria"라고 입력하면 "Victoria"라는 문자열과 일치합니다 ... 첫 번째 문자가 V 또는 v가되도록 일치 시키려면 어떻게해야합니까?

답변

0

단어의 시작이 필요한 경우 \b (단어 경계 0 너비 일치 자)을 사용할 수 있습니다. 줄의 시작이 필요한 경우 ^ (줄 0 너비 일치 시작)을 사용해야합니다. 또한 멀티 라인 기능을 가진 Regexp 엔진은 \A (문자열 0 너비 일치 자의 시작)을 정의합니다. 당신이 원하는에 따라 다음과 같이 당신의 정규 표현식 앞에 그 중 하나를 스틱 :

^((Vic[a-z])|(vic[a-z])|(VIC[A-Z]*)) 

(그렇지 않으면 당신은 "빅터"단지 시작하지만, "승리자"와 일치하기 때문 또한, 별도의 괄호를 필요 "VICTOR"는 어디서나 볼 수 있습니다.)

그런데, 그 후에는 [a-z]이 필요하므로 "피해자"와 일치하지 않습니다. 이것은 올바른 정규 표현식입니다 :

^((Vic[a-z]*)|(vic[a-z]*)|(VIC[A-Z]*)) 

"a Victor"가 아닌 "Victor"와 일치합니다. ^ 대신 \b을 쓰면 "나는 Victor가 아닙니다"와 일치합니다 (여전히 "aVictor"는 허용하지 않습니다).

0

^ 문자

아래 정규식에서
(Vic[a-z]*)|(vic[a-z]*)|(VIC[A-Z]*) 

, 첫 번째 두 개의 정규 표현식에에 + 또는 *를 추가하는 데 실패, 당신은 *을 추가하는 데 실패

^(Vic[a-z])|(vic[a-z])|(VIC[A-Z]*) 
0

같은 문자열의 시작을 나타 내기 위해 ,

(Vic[a-z])|(vic[a-z])|(VIC[A-Z]*) 

(Vic[a-z]) - Vic 뒤에 나오는 하나의 알파벳 문자와 일치 하나 그 단어 뒤에 하나 이상의 문자가 일치하지 않습니다. Vic.

0

보십시오이

/\bvic[a-zA-Z]{0,}/ig 

에 대한 Explanation

샘플 예

'vic, Victor, Victoria, victor, Victoria, VICKY, VICTOR. VICTORIA, Vic, VIC, Hello aVictoriaX'.match(/\bvic[a-zA-Z]{0,}/ig) 
//output 
["vic", "Victor", "Victoria", "victor", "Victoria", "VICKY", "VICTOR", "VICTORIA", "Vic", "VIC"] 
//Hello aVictoriaX isn't matched 
관련 문제