(这是带有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);
}
但是,这会返回各种故障。我做错了什么?
答案 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>