2014-03-03 2 views
0

는 내가 원하는 것은 이런 여러 문자열에 다른 정규 표현식에 여러 일치를 찾을 수 있습니다 :여러 정규식 일치의 순서를 유지하려면 어떻게해야합니까?

word1 
word2 
word1 
word1 
word2 
word1 

그리고 그들이 문자열에 나타나는 순서대로 모든 경기를 포함 3 개 배열, 하나가 ([ ' 단어 1 ','단어 2 ','단어 1 '...]), 나머지 두 단어는 모두 별도의 일치 항목 (단어 1 및 단어 2)을 포함합니다. 마지막 두 가지는 쉽지만 처음에는 붙어 있습니다. 내가 이것을 얻을 수있는 가장 효율적인 방법은 무엇입니까? 가능한 경우 문자열을 3 번 테스트하지 않는 편이 좋지만, 그렇게해야한다면 큰 문제는 아닙니다.

+0

어떻게 정규 표현식을 실행합니까? 어떤 코드는 무엇을 시도 했습니까? – SergeS

+0

@SergeS 별도의 일치 항목을 얻기 위해'var arr = str.match (/ regex/g);'를 두 번 사용하면 첫 번째 배열을 가져 오는 방법을 알 수 없습니다. 나는 정규 표현식에별로 좋지 않다. – Suffick

+0

this/regex/란 무엇입니까? 전체 예제를 보내주십시오. 지금까지 무엇을 했습니까 – SergeS

답변

1

줄 단위로 가서 정규식과 일치하는지 확인하십시오. 그런 다음, 각각의 배열과 집단 배열을 모두 밀어 넣으십시오.

http://jsfiddle.net/Pbyu6/

var regex = /foo\d|bar\d/g, 
    str = "foo1\n\ 
bar1\n\ 
baz1\n\ 
foo2\n\ 
foo3\n\ 
bar2\n\ 
baz2\n\ 
foo4\n\ 
bar3\n\ 
foo5", 
    a = string.split('\n'), 
    foos = [], 
    bars = [], 
    both = [], 
    s; 

for (var i = 0; i < a.length; i++) { 
    s = a[i]; 
    if (/foo/.test(s)) { 
     foos.push(s); 
     both.push(s); 
    } 
    else if (/bar/.test(s)) { 
     bars.push(s); 
     both.push(s); 
    } 
} 
관련 문제