我被迫在客户端解析一些HTML(是的,这真的是唯一的选择在这种情况下),但我在Firefox有一些麻烦只与以下内容:问题解析与jQuery,正则表达式和Firefox的HTML
$('#Extensions').load('/advanced/admin/config.php?type=setup&display=extensions #container li'
,function(){
$('li').each(function(){
var liRow=$(this).html();
var reExten=/([0-9]+)/g;
var extension = liRow.match(reExten)[0]
var reName=/>([a-zA-z0-9\s]+ *)/g;
var matchName = reName.exec(liRow);
var name = matchName[1]
});
}
);
正从load
返回的HTML是沿着线的东西:
<a href="file.php?type=A&extension=1001">Test Extension <1001></a>
正则表达式似乎工作,如果你复制罚款并粘贴到Firefox的JS控制台和代码作为一个整体在Internet Explorer 7/8/9中正常工作。
所以这里是棘手的一点。在Firefox的matchName
在.each
的每一次迭代中为空。从Firebug的输出实例:
LOG: Matches: The Boss
LOG: data: <A href="file.php?type=A&extension=13">The Boss <13></A>
LOG: regex: />([a-zA-z0-9\s]+ *)/g;
LOG: Matches: Test Extension
LOG: data: <A href="file.php?type=A&extension=1001">Test Extension <1001></A>
LOG: regex: />([a-zA-z0-9\s]+ *)/g;
LOG: Matches: John Smith
LOG: data: <A href="file.php?type=A&extension=3801">John Smtih<3801></A>
LOG: regex: />([a-zA-z0-9\s]+ *)/g;
LOG: Matches: Guy Smiley
LOG: data: <A href="file.php?type=A&extension=3802">Guy Smiley <3802></A>
LOG: regex: />([a-zA-z0-9\s]+ *)/g;
LOG: Matches: 3803
LOG: data: <A href="file.php?type=A&extension=3803">Jane Doe <3803></A>
LOG: regex: /extdisplay=([0-9]+)/g
LOG: Matches: 3804
LOG: data: <A href="file.php?type=A&extension=3804">John Doe <3804></A>
LOG: regex: />([a-zA-z0-9\s]+ *)/g;
最后,这似乎只在str.match(re)
使用re.exec
,从不时发生。我目前处于全面亏损的状态,现在已经开始了一个小时的工作,所以我希望这个问题能够带来某种意义!
我敢肯定它不是你想听到的,因为它不是一个解决问题的方法:不使用HTML的 – pinkfloydx33 2010-11-11 23:00:32
正则表达式的如果也能避免所有我会的!最奇怪的部分是,正则表达式的本身在我测试过的任何其他浏览器中都能正常工作,并且总是在for循环之外调用时......总之,Im难住了。 – HurnsMobile 2010-11-11 23:02:51
你如何生成这个日志输出?为什么在一个日志行中正则表达式不同? – 2010-11-11 23:08:16