Я вынужден проанализировать некоторый HTML на стороне клиента (и да, это действительно единственный вариант в этом случае), но у меня возникли небольшие проблемы в Firefox только со следующим:
$('#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]
});
}
);
HTML-код, возвращаемый из load
, выглядит следующим образом:
<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;
Наконец, кажется, что это происходит только при использовании re.exec
и никогда не включается str.match(re)
. Я в полном недоумении и начинаю с этого уже час, поэтому надеюсь, что вопрос имеет какой-то смысл!