使用匹配在String中查找ID

时间:2016-04-25 13:25:58

标签: javascript jquery match

我正在构建一个小部件,当它在页面上双击时会生成元素的图形。如果不重新制作所有小部件,这是我解决问题的唯一方法。

我想从元素的html中找到小部件的ID。

我想要工作的所有小部件都在div元素panel_content_id_#

我想找到代码行中找到的号码

var io_id=32715;

如何搜索此模式的字符串并获取数字(32715)。

$('div[id^="panel_content_id_"]').dblclick(function(e){
    console.log($(this).attr('id'));
    var code = $(this).html();

    // Find ID
    var id = -1;
    var search = code.match("var io_id=");
    if(search > -1){


    }

    console.log($(this).html());

});

我正在寻找的代码行将如此

 var io_id=xxxxx;

其中xxxxx =某个随机数我不知道

我想找到xxxxx

2 个答案:

答案 0 :(得分:1)

也许你可以尝试这种正则表达式模式:

\d+(?! var io_id=)

像这样使用:

$('div[id^="panel_content_id_"]').dblclick(function(e) {
  console.log($(this).attr('id'));
  var code = $(this).html();

  // Find ID
  var id = -1;
  var search = code.match("var io_id=");
  
  if (search) { // Edited
    // New code
    alert(code.match(/\d+(?! var io_id=)/gim));
  }

  console.log($(this).html());

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="panel_content_id_32715">
  Div content
  <br><br>
  var io_id=32715;
</div>

答案 1 :(得分:1)

将其拆分为两部分 - var io_id=之前的所有代码和之后的所有代码。
然后你知道该行以;结束,所以从第二部分开始你切割分号之前的东西。
代码

$('div[id^="panel_content_id_"]').dblclick(function(e){
    console.log($(this).attr('id'));
    var code = $(this).html();

    // Find ID
    var id = -1;
    if (code.indexOf("var io_id")>-1) {
        id = parseInt(code.split("var io_id=")[1].split(";")[0]);
    }

    if(search > -1){
        console.log("The code betrayed me");
    }

    console.log("The id is: " +id);
});