javascript
  • html
  • regex
  • 2010-11-16 97 views 1 likes 
    1

    我有一個字符串變量,我想在id="resultcount"元素中提取標題值。輸出應該是2如何使用Javascript regexp從字符串中提取標題值?

    var str = '<table cellpadding=0 cellspacing=0 width="99%" id="addrResults"><tr></tr></table><span id="resultcount" title="2" style="display:none;">2</span><span style="font-size: 10pt">2 matching results. Please select your address to proceed, or refine your search.</span>'; 
    

    我試過以下的正則表達式,但它不工作:

    /id=\"resultcount\" title=['\"][^'\"](+['\"][^>]*)>/ 
    
    +2

    引用你一些史詩:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – stefanw 2010-11-16 20:17:29

    回答

    0

    請參閱此更早的回答,題爲 「你無法解析[X] HTML與正則表達式」:

    RegEx match open tags except XHTML self-contained tags

    +0

    我看到...有沒有一種替代方法解析字符串而不使用正則表達式?謝謝。 – 2010-11-16 20:29:32

    +0

    是的,請使用Leo的答案 – adam0101 2010-11-16 21:31:46

    0

    那麼,因爲沒有其他人在這一點上跳躍,我假設你只是尋找一個值,而不是試圖創建一個解析器,我會給你什麼適合我PCRE。我不知道如何將它放到java格式中,但我認爲你可以做到這一點。

    span id="resultcount" title="(\d+)" 
    

    你正在尋找的部分是非被動組$ 1,這是'\ d +'部分。它將在引號之間得到一個或多個數字。

    +0

    謝謝大家花時間回答我的問題並給我提示。 – 2010-11-16 21:22:31

    3

    由於var str = ...是Javascript語法,我假設您需要Javascript解決方案。正如彼得·科利特說,你不能使用正則表達式解析HTML,但如果你使用jQuery,您可以使用此用它來充分利用瀏覽器自身的解析器沒有努力:

    $('#resultcount', '<div>'+str+'</div>').attr('title') 
    

    它將如果返回RESULTCOUNT undefined未找到或者它沒有標題屬性。

    1

    ,以確保它並不重要的屬性(ID或標題)是第一位在一個字符串,將整個HTML元素所需的ID:

    var tag = str.replace(/^.*(<[^<]+?id=\"resultcount\".+?\/.+?>).*$/, "$1") 
    

    然後從以前的字符串找到標題:

    var res = tag.replace(/^.*title=\"(\d+)\".*$/, "$1"); 
    // res is 2 
    

    但是,正如人們之前提到的那樣,使用RegEx來解析html是不可靠的,像「不同的引用」(單引號而不是雙引號)或者「錯誤」位置中的空格會導致制動它。

    相關問題