2014-05-13 2 views
0

안녕 얘들 아 json 문자열 안에 토큰을 찾을 수있는 정규식을 작성하는 방법을 알고 있나요?json 내부의 토큰을 얻기위한 정규식

{"testt":"{ccc}"} 

현재 임

text.match(/\{([^\}]+)\}/gm) 

를 사용하여 내가받을 필요가 불과 ​​{ccc}하지 {"testt":"{ccc}

+0

정규식을 사용하여 JSON을 구문 분석하지 마십시오. JSON 구문 분석 라이브러리를 사용하지 않는 이유는 무엇입니까? –

+0

im은 JSON을 구문 분석하지 않습니다. {token_name}을 사용하여 정의 된 토큰을 가져와야합니다. – user2470746

+1

JSON을 구문 분석 한 다음 토큰에 대한 객체 테스트를 반복하는 것이 현명합니다. – Sam

답변

2

IT 당신이 찾을 따옴표 특성에 할 토큰처럼 보인다. 그것은 JSON.parse 처음에 가장 좋은 한 다음 속성을보고 그들이 표현식과 일치하는지,하지만 당신은 같은과 원시 JSON을 검색 할 수 있습니다 것입니다 :이 토큰은 "{로 시작하고 }"로 끝나는 것으로 가정

text.match(/"\{([^\}]+)\}"/gm) 

. 시도해 볼 수도 있습니다 :

text.match(/"\s*\{\s*([^\}]+)\s*\}\s*"/gm) 
+1

당신의 점수와 당신의 예 (+1)에 동의하십시오. '}'는 문자 클래스에서 특별한 의미가 없으므로 이스케이프 할 필요가 없습니다 :'([^}] +)'. – Sam

+0

안녕하세요 정규식 "missing /"에 오류가있는 것 같습니다 – user2470746

+0

@ user2470746 죄송합니다. 구문 오류를 수정하기 위해 편집했습니다. –

0

토큰의 위치에 따라 다른 방식으로 접근 할 수 있습니다. 토큰의 인용문이 항상 인용 부호 인 경우이를 포함 할 수 있습니다. 문제는 실제로 JSON의 경우 매우 까다로워서 the way the JSON format operates 때문에 발생합니다. 그것이 항상 json의 가치 섹션에 있다면 당신은 도망 갈 수있을 것입니다.

(?::)"?\{([^\}]+)\} 

그러나 것보다 더 당신은 당신이 명시 적으로가 아니라 단지 중괄호보다, 찾고있는 태그의 더 나은 화이트리스트가 필요합니다.

나는 첫 번째 대답을 발견하고이를 어쨌든 게시했습니다. 태그가 따옴표 밖에있는 경우 JSON으로 {tag}을 구문 분석하려고하는 파서의 문제가 발생합니다.

관련 문제