.match

2013-03-15 4 views
0

에 대한 정규식 표현식을 사용하고 있습니다..match

AJAX/xml으로 빌드 된 어레이를 사용하고 싶습니다.

array[/word0/, /word1/, /word2/] 

.match()에서 사용될 수있는 형태로이 입력 :

result = string.match(array) 

I는 루프를 사용하고 소용 string.match(array[i])를 사용하여 어레이를 단계별 시도했다.

쉬운 방법이 있나요?

+2

'경우 String.match을 (/ word0 | 단어 1 | word2 /)' – elclanrs

+0

오류가 무엇입니까? 나는 당신이 "쓸데없는"것보다 설명력이 있어야한다고 생각합니다. 당신이하고 있던 일은 유효한 해결책입니다. 그래서 제 생각에 당신의 문제는 다른 곳에 있습니다. (더 구체적인 추측을 위해 제 대답을보십시오). – benekastah

+0

실제로 오류가 발생하지는 않습니다. 귀하의 예제를 사용하는 원칙을 이해하지만, 배열의 내용을 덤프 할 경우 .join 전에 "word1", "word2", "word3"을 얻습니다. .join 후 나는 이것을 얻는다 : /(? :)/ – Hewhoshallnotbenamed

답변

1

편집 : 여기 내 구현의 당신은 구문에 문제가있을 수 있습니다. 이 같은

array[/word0/, /word1/, /word2/] 

뭔가를 해결합니다 :

var regexps = [/word0/, /word1/, /word2/]; 

원래 답 :

자바 스크립트 RegExp의 이미 이렇게 다음은 올바른 구문이 아닙니다.

var regexp = /word0|word1|word2/; 

일치의 목록이 다시 올바른 형식으로되어 가정, 당신과 같이이를 수있다 : 당신이 찾고있는

var words = ["word0", "word1", "word2"]; 
var regexp = new Regexp(words.join("|")); 
str.match(regexp); 
+1

고마워요. 나는 실제로 구문 문제가 생겼다. 원래 배열에 대한 액세스를 차단했습니다. 몇 시간이 걸렸지 만 그것을 추적하는 데 도움이되었습니다. 또한 제안에 대한 다른 사람들에게 감사드립니다. 건배 – Hewhoshallnotbenamed

0

배열을 초기화하려면, 다음 일반을 구축해야 문제가 "AJAX/XML"의 전송이 경우

str.match(array[i]) 

을 사용할 수 있습니다 그리고

var array = [/word0/, /word1/, /word2/]; 

를 사용 표현식 클라이언트 쪽이 new RegExp(somestring)이고 somestring이 예를 들어 "word0" 일 수 있습니다. 정규 표현식을 XML에 포함 할 수 없습니다.

+0

미안하지만 나는 더 정확해야했다. 방금 요약 된 코드를 제공했습니다. – Hewhoshallnotbenamed

1

http://jsfiddle.net/KALPh/

귀하의 접근 방식은 괜찮았다.

var regexes = [/^def/, /^abc/], 
    testString = 'abcdef', 
    numRegexes = regexes.length; 

for(var x=0;x<numRegexes;x++) { 
    alert(regexes[x].test(testString)); 
}