根据字符串匹配

时间:2015-05-01 15:12:00

标签: javascript jquery regex string-matching

我需要在[列表的选定类中获取]li之间的数字,并将数字存储在变量中。我尝试了以下内容,但我遗漏了一些东西。我不确定regex需要在括号之间查看并抓住字符串。

的Javascript

var assetID = $(".selected:contains('on-air-date').find('[]');

HTML

<ul id="asset-list" class="expandable selectable normal" style="height: 671px;">
    <li class="selected">
        <div class="thumb">
            <a href="/content/assets/750">
                <img src="https://www.google.com/images/srpr/logo11w.png">
            </a>
        </div>
        <div class="title">
            <div>
                <strong>Title of story</strong>
                <br>
                <span class="on-air-date">
                    On air: 10/28/14 05:30:00pm
                    [750]
                </span>
                <br>
                <span class="blue radius label">Staging</span>
                <span class="green radius label">Live</span>
            </div>
        </div>
    </li>
    <li>
        <div class="thumb">
            <a href="/content/assets/4200">
                <img src="https://www.google.com/images/srpr/logo11w.png">
            </a>

        </div>
        <div class="title">
            <div>
                <strong>Another story title</strong>
                <br>
                <span class="on-air-date">
                    On air: 12/10/14 02:09:18pm
                    [4200]
                </span>
                <br>
                <span class="blue radius label">type label</span>

            </div>
        </div>
    </li>
    <li>
        <div class="thumb">
            <a href="/content/assets/4201">
                <img src="https://www.google.com/images/srpr/logo11w.png">
            </a>
        </div>
        <div class="title">
            <div>
                <strong>Yet another story title</strong>
                <br>
                <span class="on-air-date">
                    On air: 12/10/14 02:09:18pm
                    [4201]
                </span>
                <br>
                <span class="blue radius label">type label</span>
            </div>
        </div>
    </li>
</ul>

JSFiddle:link

2 个答案:

答案 0 :(得分:1)

:contains('on-air-date')无效,您无法使用contains访问具有指定类的子元素。 .find('[]')无效。以下代码对我有用:

  $('.selected').click(function () {
     var assetID = $(this).find('.on-air-date').text().split('[')[1].replace(']', '');
     //this first splits the text into two by '['
     //then we get the second half by [1]
     //finally we remove the last character ']' by using .replace

     alert(assetID);
  })

演示:https://jsfiddle.net/k3keq3vL/1/

答案 1 :(得分:1)

您需要首先获得所需的单个项目,或者运行$ .each以获取页面中的所有内容。

//run the each statement
$(".on-air-date").each(function(index,value) {

     //set the string (str) variable to the value's text which is inside the <span>  
     var str = $(value).text();

     // match the string with [ ] with anything inside. and then remove the last ].  Then take the substring of the content after the [
     var value = str.match(/\[(.*?)\]/g)[0].replace(/\]/g,'').substring(1,str.length-1));

});

http://jsfiddle.net/k3keq3vL/8/ 打开控制台,查看字符串匹配和子字符串

的console.log中返回的数字列表