Какая часть этого RegEx заставляет его не находить совпадений в IE7 и IE8? - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть регулярное выражение, которое ищет <span> с именем класса foobar.Работает в IE9, Chrome и Firefox.Это терпит неудачу в IE7 и IE8.Кто-нибудь может сказать мне, почему?

new RegExp( /(\s*?)<span\b(?:.*?)(?:class=(?:'|"|.*?\s)?foobar(?:\s|\3))(?:.*?)(?:\/)?>(.+?)<\/span>(\s*?)/g )

1 Ответ

3 голосов
/ 09 ноября 2011

Если вы применяете регулярное выражение к html, полученному из getElementById (). InnerHTML или jQuery .html (), IE будет вводить HTML-теги в верхнем регистре, что может быть проблемой.Если вы сделаете регулярное выражение нечувствительным к регистру - то есть измените модификатор /g на /gi в конце - это исправит это?

Похоже, вы также смешиваете литерал регулярного выражения и RegExpСинтаксис объекта, вы можете сделать это только с литералом регулярных выражений.

var regex = /(\s*?)<span\b(?:.*?)(?:class=(?:'|"|.*?\s)?foobar(?:\s|\3))(?:.*?)(?:\/)?>(.+?)<\/span>(\s*?)/gi;
...