2009-08-27 6 views
0

내가 이것을 이해하도록 도와 줄 수 있습니까? 다음 자바 스크립트 스 니펫이 있습니다.자바 스크립트 RegExp 질문

pattern = new RegExp('^bla*a', 'i'); 
console.debug(pattern.exec('blatr')); 

출력 후 [ "bla"] 출력됩니다. 이 정규식을 해석하는 방법은 다음과 같습니다. 'bla'로 시작하고 'a'로 끝나는 문자열을 찾으십시오. 중간에 많은 문자가 포함되어 있습니다. 이 경우 'blatr'은 정규식과 일치하지 않아야하지만 그렇지 않습니다. 내가 뭘 잘못하고 있니?

감사합니다. 표현식에서

+0

내 대답은하지 않았다 어떤 이유 (개인적으로 학문적 분석을 위해서 순전히 알고 싶다.) – aditya

답변

0

A *하지 문자열 을하는 0 번 이상 선행 문자 일치한다. 괄호를 사용해야합니다. 이 시도 :

new RegExp('(^bla){1}.+a$', 'i'); 

편집 :를 문자열의 시작 부분과 일치하는 표현에 +를 사용하여 아무 문제. 또한 bla 사이의 문자를 찾으려면 + 문자를 사용해야합니다.

편집 : Ahem, 다른 답변과 마찬가지로 괄호가 필요하지 않습니다. 자기 자신에 대한 참고 사항 : RegEx의 엔지니어링을 중단하고 답변을 게시하기 전에 테스트하십시오. : P 이는 괜찮 :

new RegExp('^bla.+a$', 'i'); 
4

A '*'의미 {0} 또는 앞 문자 "0 이상의". 당신이

^bla.*a$ 

편집해야 할 노력하고 무엇 : 누락 된 문제 이전의 일부 " 'A'로 끝납니다."

+1

이 정규 표현식의 끝에 $를 붙이면된다. 그렇지 않으면 "blatraddd"와 일치한다. – Kamarey

+0

질문에서 그 부분을 놓쳤다. – aditya

0

귀하의 정규식은 0 개 이상의 a 다음 줄의 시작 부분에 문자를 bl 일치 년대 후 하나 (하나 이상의 a에 해당 a '의 가능성이 문자는 그 다음에 s) 등이 있습니다. blatr과 일치합니다.

는 내가 제대로 이해한다면, 사용 (수행 할 작업을 수행합니다

'^bla.*a'

* 수단이 이전 문자를 반복 0 번 이상