2010-07-30 6 views
1

다시 한 번 도움이 필요하며 도움을 주셔서 감사합니다.
HTML 태그에 포함 된 텍스트 문자열을 대체하지만 태그를 모두 무시하는 JavaScript 함수에 대한 정규식을 구현하려고합니다. 예를 들어
는 :
내가 찾아 교체 할 필요가 문자열은 달러 기호 ($), 나는 같은 외모와 함께 일하고 있어요 HTML입니다 :HTML 태그를 무시하고 문자를 바꾸는 자바 스크립트 정규식

<div class="myClass"> 
    <input type="radio" value="$233.93" name="myInput" id="myInputId"> 
    <label> 
     $36.<sup>07</sup> 
    </label> 
</div> 

당신이 볼 수 있듯이, I 입력 태그의 value 속성에 달러 금액이 있고 label 태그 안에 또 다른 금액이 있습니다.
이 HTML은 모두 td (표 셀)에 포함되어 있습니다. 표 셀은 차례로 표의 일부로, 열 기능별 정렬을 구현합니다.
내 문제는 HTML 태그를 모두 무시하고 내 레이블 태그 ($36.<sup>07</sup>) 내의 문자열 만 일치시키는 정규식을 생각해 낼 수 없었다는 것입니다.
/[$](?=(\d{2,5}[.<]))/
이 정규식은 값 속성의 첫 번째 달러 기호와 일치하며 반올림 방식으로 만 적용됩니다. 정규식을 부여하면 전역으로 설정되지 않습니다. 왜냐하면 모든 달러를 대체하기 때문입니다 기호 및 나는 그것을 할 wan't, 그리고 중 하나를 HTML 구조를 변경할 수 없습니다.

도움을 주시면 감사하겠습니다. 감사

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags 황색으로 – Amber

+0

+1, HTML을 – marcgg

+1

I를 구문 분석하는 정규식을 사용하지 않는 내가 실수라고 생각, 내가 HTML을 정규식으로 구문 분석하려고하지 않아, 나는 값을 추출하고 정규식에 대해 테스트하려고합니다. 그게 똑같습니까? – jnkrois

답변

2

당신은 jQuery를 쉽게이 문제를 해결 할 수 있습니다 당신을 위해 태그를 제거하고 다음 훨씬 간단 정규식으로 테스트 할 수 있습니다 $36.07를 생성합니다

jQuery.trim(jQuery('label').text()) 

.


(

당신은 당신이 아직도의 소스 코드를 살펴보고 그들이하기 위해 .text() 기능을 구현 한 방법을 볼 수 있습니다, 현재 jQuery를 사용하지, 그것을 사용하지 않으려면 그것을 모방)


흠, 다시 읽고 귀하의 질문에, 당신이 다른 것을 요구 될 수는 - 당신이 할 수있는) $ 포함 된 모든 레이블을 검색 (그리고 입력을 무시 :.

jQuery('label:contains($)') 

또는

jQuery('label').each(checkForDollars); 

function checkForDollars() 
{ 
    if (jQuery(this).text().matches(/\$\d{2,5}/) }) 
    { 
     // do something 
    } 
) 
+0

non-jq 버전 :'var labels = document.getElementsByTagName ('label'); (var len = labels.length, i = 0; i

+0

trim은 모든 브라우저에서 내장 함수가 아닙니까? –

+0

대단히 감사합니다. 나는 이것을 분명히 시도 할 것입니다. – jnkrois

0

금액이 항상 $36.<sup>07</sup>과 같은 형식 인 경우 작동합니다.

function getAmount (s) { 
    var r = /\$([^<]+)<sup>(\d+)/.exec(s); 
    return r[1]+r[2]; 
} 

getAmount("$36.<sup>07</sup>"); 
// returns "36.07" 
+0

감사합니다. 이것은 많은 도움이됩니다. – jnkrois

관련 문제