簡體   English   中英

使用正則表達式提取數據

[英]Extract data using regular expression

我有這些文本字段。

<input type="text" value="<p>aaaaaaaaaaa</p>" id="tab_4_0_li_div_content"><input type="text" value="lab" id="tab_4_0_li_data"><input type="text" value="<p>dddd</p>" id="tab_4_1_li_div_content"><input type="text" value="client" id="tab_4_1_li_data">

這里tab_4_*_li_datatab_4_*_li_data<li> html,而tab_4_0_li_div_content<div> id ,將在<li>點擊時顯示。

現在,我想使用正則表達式從此輸入字段中提取數據。 例如

client,lab 

作為關鍵和

<p>aaaaaaaaaaa</p>,<p>dddd</p>

作為鍵的值。

如果您看到它們彼此相關。

tab_4_0_li_div_content        tab_4_0_li_data
<p>aaaaaaaaaaa</p>             lab

tab_4_1_li_div_content        tab_4_1_li_data
<p>dddd</p>                    client

Div內容部分可以滿足任何條件,這是一個文本區域。 那么我們該怎么做呢?

沒有理由必須使用正則表達式來解析HTML。 一件事,您將不會有一個美好的時光。 第二,利用DOM的力量

 var contents = $("[id$=content]"); //find the elements that have an id that end with content var datas = $("[id$=data]"); //find the elements that have an id that end with data var details = {}; //object to hold results datas.each( function(i) { details[datas[i].value] = contents[i].value; }); //start looping and generate the object with the details you are after console.log(details); //Object {lab: "<p>aaaaaaaaaaa</p>", client: "<p>dddd</p>"} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <input type="text" value="<p>aaaaaaaaaaa</p>" id="tab_4_0_li_div_content"><input type="text" value="lab" id="tab_4_0_li_data"><input type="text" value="<p>dddd</p>" id="tab_4_1_li_div_content"><input type="text" value="client" id="tab_4_1_li_data"> 

現在,該代碼假定數據和內容元素的順序相同(如果不同),則需要進行少量處理,但這並不難。

  var datas = $("[id$=data]"); var details = {}; datas.each(function(i, elem) { var id = elem.id; var val = $("#" + id.replace("data", "div_content")).val(); details[elem.value] = val; }); console.log(details); //Object {lab: "<p>aaaaaaaaaaa</p>", client: "<p>dddd</p>"} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <input type="text" value="<p>aaaaaaaaaaa</p>" id="tab_4_0_li_div_content"> <input type="text" value="lab" id="tab_4_0_li_data"> <input type="text" value="<p>dddd</p>" id="tab_4_1_li_div_content"> <input type="text" value="client" id="tab_4_1_li_data"> 

您可以這樣做:

function getValuesById(id1,id2){
    var vals = {};
    if(id1 === undefined)
        id1 = "\\d+";
    if(id2 === undefined)
        id2 = "\\d+";

    $("input").each(function (index, value) {
        console.log(new RegExp('tab_(' + id1 + '_' + id2 + ')_li_data'));
        var match = value.id.match(new RegExp('tab_(' + id1 + '_' + id2 + ')_li_data'));
        if (match) {
            vals[value.value] = $("#tab_" + match[1] + "_li_div_content").val();
        }
    });
    return vals;
}

在這里,我搜索所有輸入字段,並與tab_DIGITS_DIGITS_li_div_data匹配,並將其作為鍵,並將對應的li_div_content作為對象值的值。

在這里查看: JSFiddle

更新:我已將代碼更新為一個函數,您可以在其中向兩個數值發送參數,並且將使用任何數字(如果未提供),即用作諸如tab_4_*_li類的值的getValuesById(4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM