2009-06-11 10 views
13

Javascript에 PHP의 preg_match_all과 동일한 것이 있습니까? 그렇지 않다면 정규 표현식의 모든 일치 항목을 배열로 가져 오는 가장 좋은 방법은 무엇입니까? JS 라이브러리를 사용하면 쉽게 사용할 수 있습니다. 당신은 글로벌 수정과 match을 사용할 수 있습니다preg_match_all JS 상당?

답변

18

:

>>> '1 2 3 4'.match(/\d/g); 
["1", "2", "3", "4"] 
+1

그 구문을 이해하지 못했다. – erm3nda

+0

@ erm3nda 내 생각에 **/\ d/g ** 이해가되지 않았다. 여기 [Javascript에서 정규 표현식 만들기] (https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions). –

10

존 레식 그것은 자바 스크립트의 콜백 소요 기능을 대체 사용하여 작동

'Search and dont replace를'이라는 자신의 블로그에 큰 기술에 대해 작성했습니다 기능을 사용하고 원래 내용을 변경하지 않고 그대로 유지합니다.

전역 일치를 사용하고 결과 배열을 반복하는 것보다 더 깔끔하지 않을 수 있습니다. 특히 여러 그룹을 캡처하는 경우 특히 그렇습니다.

1

JS에서 PHP의 preg_match_all보다 나은 점은 exec() 함수를 사용하는 것입니다. 이렇게하면 match()를 사용하여 그룹을 캡처 할 수 있습니다.

는 예를 들어, 당신은 변수 MyString의에서 괄호에있는 모든 시간과 수를 캡처 할 :

var myString = "10:30 am (15 left)11:00 am (15 left)11:30 am"; 
var pattern = /(\d{1,2}:\d{1,2}\s?[ap]m)\s\((\d+)/gi; 
var match; 
while (match = pattern.exec(myString)){ 
    console.log('Match: "' + match[0] + '" first group: -> "' + match[1] + '" second group -> ' + match[2]); 
} 

출력은 다음과 같습니다

Match: "10:30 am (15" first group: -> "10:30 am" second group -> 15 
Match: "11:00 am (15" first group: -> "11:00 am" second group -> 15