2014-05-09 3 views
0

다음과 같은 문자열 [row element="div"]This is a row[/row]이 있는데이 문자열은 div 속성과 This is a row 문자열을 JavaScript 및 Regex를 사용하여 추출하고 싶습니다.이상한 결과입니까 아니면 잘못 되었습니까?

var string = '[row element="div"]This is a row[/row]'; 
var $d  = string.match(/\[row element="([^"]+)"\](.*?)\[\/row\]/g); 

console.log($d); 

그 결과는 다음과 같습니다 :

나는이 작업을 수행하려고하는 방법은 다음과 같다

[row element="div"]This is a row[/row] 

그래서, 문제는, 내가 잘못하고, 또는하고있다 코드가 이상하게 작동합니까?

이것이 잘못된 경우, string 변수에서 필요한 부분을 어떻게 추출 할 수 있습니까?

+0

'[ "[행 요소 ="DIV는 "DIV" "]이 로우 [/ 로우] 인" "이것은 행입니다", 인덱스 : 0, 입력 : "[row element ="div "] 이것은 행입니다 [/ row]"]' – bottens

답변

1

/g.match은 하위 패턴과 호환되지 않습니다.

대신, 다른 방법으로 주위 시도 2.

에서 인덱스 0, 1과 제 서브 패턴, 두 번째로, 전체 매치를 함유하는 결과가 배열되어야

var regex = /......../g; 
var $d = regex.exec(string); 

console.log($d); 

.exec 번을 반복적으로 호출하여 [row element="foo"]bar[/row] 패턴이 더 일치하는지 확인할 수 있습니다. .exec은 일치 항목이 더 이상없는 경우 null을 반환합니다.

1

다음을 사용할 수는 출력 정규식에서 '/ g` 제거

var $d = string.match(/\[row element="(?:[^"]+)"\](.*?)\[\/row\]/)[1]; 
//=> "This is a row" 
관련 문제