2017-02-09 4 views
-2

정규식에 대한 질문이 있습니다. 나는 하나의 정규식으로 3 개의 다른 주에서 2 개의 일치를 원한다. 이것은 내 정규 표현식을 실행하려는 소스입니다.자바 스크립트 정규식

첫 번째 예 :

@@include('some string here', []) 

// This is the output I want: 
// First match: 'some string here' 
// Second match: '[]' 

번째 예 :

@@include('some string here', {}) 

// This is the output I want: 
// First match: 'some string here' 
// Second match: '{}' 

번째 예 :

@@include('some string here') 

// This is the output I want: 
// First match: 'some string here' 

모든 t 그는 위의 단일 정규식이 필요하다고 말합니다. 이것이 가능한가?

+0

이 구문은 javascript가 아닙니다 – Isaac

+1

두 번째 부분에는 선택적 패턴을 사용하십시오. – Barmar

+1

@Isaac 일치하는 코드는 아마도 자바 스크립트 일 것입니다. – Barmar

답변

1

그래서 이것은 당신이 당신의 "{}"와 "[]"안에 적당한 값으로 기대에 따라 약간의 비틀기를해야 할 수도 있지만, 바른 길에 당신을 얻을해야합니다

var regex = /@@include\((\'.*?\')(?:,\s+(\[.*?\]|\{.*?\}))?\)/i; 
// or, non greedy version: 
// var regex = /@@include\((\'.*?\')(?:,\s+(\[.*\]|\{.*\}))?\)/i; 

"@@include('some string here')".match(regex); 
// ["@@include('some string here')", "'some string here'", undefined] 

"@@include('some string here', {})".match(regex); 
// ["@@include('some string here', {})", "'some string here'", "{}"] 

"@@include('some string here', [])".match(regex); 
// ["@@include('some string here', [])", "'some string here'", "[]"] 

희망이 도와 줘요!

+0

답변 해 주셔서 감사합니다! {}와 [] 일치는 객체 또는 배열입니다. – justkidding96

+0

맞아요. 그렇지만 가치가있을 거 같아요? 배열 내의 객체 또는 배열 내에 객체가 있습니까? 그게 상황을 복잡하게 만들 수 있습니다 ... 당신은 내부 내용을 욕심 없게 만들어야 할 수도 있습니다 ... 내 대답을 업데이 트 – MacPrawn

+0

예 내 배열이나 물건 안에 모든 종류의 물건을 원해. 객체 내의 배열 또는 배열이있는 객체와 같습니다. 어떻게해야합니까? – justkidding96