2016-12-01 1 views
0

문자열 형식으로 저장되는 긴 xml 원시 메시지가 있습니다. 샘플은 다음과 같습니다. 이 <tagSomeNameXYZ/> 같은 빈 HTML 태그가 포함 된 경우 JS 문자열과 정규식 일치

<tag1>val</tag><tag2>val</tag2><tagSomeNameXYZ/> 

나는이 문자열을 검색하여 찾을 찾고 있어요. 이 문제는 값이 인 경우 문맥에 따라 변경 될 수 있습니다. Str.match(/tagSomeNameXYZ/g)Str.match(/<tag.*.XYZ\/>/g)을 사용하여 해당 문자열이 정확하게 포함되어 있는지 확인했지만 반환 할 수는 있습니다. 나는 * (나는에 관심이 아니에요한다)

T1 내지 SomeName 될 것입니다 <tag*XYZ/>, 같은 일치하는 등록의 예를 서면으로 문제가있어, 박사 : 나는 문자열에서 <tagSomeNameXYZ/>를 필터링하려면 어떻게합니까. 형식 존재 :이 일치해야 <constant variableName constant/>

예 패턴

<tagGetIndexXYZ/> 
<tagGetAllIndexXYZ/> 
<tagGetFooterXYZ/> 
+1

testString = "<tagGetIndexXYZ/>" res = testString.match(/<tag([^/]*)\/\>/)[1].slice(0,-3) console.log(res)
않습니다. 그것을 파싱하고 DOM을 걷거나,'document.evaluate'와 함께 XPath를 사용하여 찾고있는 것을 찾으십시오. –

답변

0

당신이 Str.match(/<tag.*.XYZ\/>/g)으로이 문제는이다 *이가 보는 모든 것을 받아 원하는대로 XYZ에서 멈추지 않습니다.. 따라서 중지 할 방법을 찾아야합니다 (예 : [^/]*/을 찾을 때까지 계속 걸릴 것을 의미 함). 그런 다음 다시 작업하십시오 (slice).

는 정규 표현식으로 XML을 구문 분석하지 마십시오 도움말을

+0

감사합니다. 내가 이것을 시도하자. 그것이하는 일을 간단히 설명해 주시겠습니까? 특히 슬라이스 부분. – blueren

+0

끝 부분에있는 XYZ가 제거됩니다. 마지막에 상수가 다른 경우 -3을 다른 것으로 변경해야합니다 –

+0

다운 투표 한 사람이 더 나은 해결책을 제공하여 모두 배울 수 있습니까? –