Jquery循环通过正则表达式匹配

时间:2011-10-31 10:42:59

标签: jquery regex loops greasemonkey

(这是带有jquery的greasemonkey)

我有一串数据,用于检索 $.post('page.php',function (data) { ... });
在该数据中,有像h这样的html标签 <option value='numeric'>data</option>以及随机,无用的信息 我希望能够遍历每个匹配并获得选项标记之间的数值和数据 我该怎么做?我试过了:
reg = new RegExp(/<option value=\'(.+?)\'>(.+?)<\/option>/);
var result;
while (result = reg.exec(data)) {
GM_log(result);
}

但是,这会返回各种故障。我做错了什么?

3 个答案:

答案 0 :(得分:0)

我可以看到的第一个问题是你正在向RegExp构造函数传递一个文字正则表达式对象。这不是问题,但如果您可以使用正则表达式文字来使用RegExp构造函数,则没有意义。

您可以像这样使用RegExp构造函数

reg = new RegExp("<option value='(.+?)'>(.+?)<\/option>");

或者您可以使用像这样的正则表达式文字

reg = /<option value='(.+?)'>(.+?)<\/option>/;

现在

reg.exec("<option value='numeric'>data</option>") 

给出

["<option value='numeric'>data</option>", "numeric", "data"]

最后用正则表达式解析html并不是一个好主意。更多相关内容RegEx match open tags except XHTML self-contained tags

答案 1 :(得分:0)

$.post('page.php',function (data) { 
   alert($(data).find('option').attr('value')); 
   // returns numeric if there is one element. so use a .each() to get individual ones.

});

答案 2 :(得分:0)

尝试在对象模式中使用/ g。

我已经使用以下示例代码对此进行了测试:

<html>
   <body>
     <script type="text/javascript">

           var str="Hello world Hello World Heello you! ";
           //look for "Hello"
           var patt=/Hello/g;
           var resulT
           while(result=patt.exec(str)){
             document.write("Returned value: " +  result); 
             var result=patt.exec(str);
             document.write("<br />Returned value: " +  result); 
           }
       </script>
    </body>
</html>