2013-08-13 3 views
1

그래서 약간의 정규 표현식에 문제가 있습니다. 시작과 끝을 따로 따로 일치시키는 표현식이 있습니다. 문제는 동일한 표현식에서 시작과 끝을 모두 일치 시키려고 할 때 발생하며 그 이유가 무엇인지 이해할 수 없습니다. 나는 심지어 시작과 끝 태그 사이의 내용에 대한 회계를 시도했지만 아직 운이 없다.정규 표현식의 시작과 끝 일치

Works: /^([ ])?\[(\/?)gaiarch(=[^"]*)?]([ ])?/ig 
Works: /([ ])?\[(\/?)gaiarch(=[^"]*)?]([ ])?$/ig 
Doesn't work: /^([ ])?\[(\/?)gaiarch(=[^"]*)?]([ ])?$/ig 

가 일치 내가 가지고 노력하고있어 :

[gaiarch=slider] 
[img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/trade_c.png" text="Trading Image" goto="http://www.gaiaonline.com/gaia/bank.php?mode=trade&uid=15388423"],[img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/friend_c.png" text="Friends Image" goto="http://www.gaiaonline.com/friends/add/15388423"][/gaiarch] 

[gaiarch=slider][img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/gaiaonline/thread/post/dark-center_bottom_zps419960f4.gif" text="bottom bar"] 
[img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/gaiaonline/thread/post/star-say_right_zpsdc3769f3.png" goto="http://www.gaiaonline.com/"][/gaiarch] 
+0

: 당신이 RegExp.exec() 사용할 수있는 작업이 표현을 위해

/\[gaiarch(?:=([^\]]+))?\](.*?)\[\/gaiarch\]/ig 

:

는이 같은 뭔가가 필요 개폐 태그 사이에 어떤 일치 시키려면 '[gaiarch = ...]'와'[/ gaiarch]'사이의 문자열? –

+0

둘 다 얻으려면 [this regex] (http://www.regex101.com/r/cC1gB2)를 사용할 수 있습니다. '|'(or) 연산자를 사용합니다. 그래서 처음에는''gaiarch = ... ''와 끝에는'/ gaiarch '와 일치합니다. 이게 니가 찾고있는거야? – Jerry

+0

달성하고자하는 결과를 입력하십시오. – Coxer

답변

0

문제는 당신이 여는 태그와 닫는 태그 사이에 무엇이 일치하지 않을 것입니다; 표현식은 시작 또는 종료 태그가 문자열의 유일한 내용이 될 것으로 예상합니다. 당신은 일치하려는

var re = /\[gaiarch(?:=([^\]]+))?\](.*?)\[\/gaiarch\]/ig; 
while ((match = re.exec(str)) !== null) { 
    console.log(match[1]) // "slider" 
    console.log(match[2]) // "[img url=...]" 
} 
관련 문제