В JavaScript RE нет видоискателей или встроенных модификаторов. Таким образом, мы перемещаем (?i)
в конец регулярного выражения: //i
. Задний взгляд немного сложнее имитировать, поэтому проще просто принять тот факт, что это невозможно сделать, и вместо этого использовать группу захвата, чтобы найти то, что вам нужно:
var pattern = />([^<]+)<\/TD>/i;
var result = str.match(pattern);
// the match you want is in result[1]
РЕДАКТИРОВАТЬ: Кажется, работает нормально на обеих предоставленных вами строк:
"<td class='asd'>sd</td>".match(/>([^<]+)<\/TD>/i)
// [">sd</td>", "sd"]
Если вы хотите сопоставить несколько элементов в одной строке, вы можете ab использовать метод replace()
примерно так:
var textInTds = []; // empty array we will fill up:
"<td>bla1</td><td class='asd'>sd</td>".replace(/>([^<]+)<\/TD>/ig, function($0, $1) {
textInTds.push($1); // push onto the array
return $0; // return the original text so that it doesn't destroy the string
});
// textInTds -> ["bla1", "sd"]