RegExp и unicode
есть у меня RegExp: re = /name='.+?_([^_']+)'/gmi;
Применяется он к такому тексту: <table><tr><td>место работы</td><td colspan=4><input name='previous_place_new1' style='width:100%'></td></tr></table> Текст берётся из div.innerHTML, и изначально лежит в HTML документе, в кодировке UTF-8. В описанной ситуации RegExp ничего не находит. Если же убрать из текста все русские буквы, то RegExp.$1 содержит, как и задумано, строку "new1". Как бы заставить это работать с юникодом тоже? Бровзеры, где это не работает: IE6sp1, FF2.0.0.14, Opera9.27 |
попробуй сам javascript сохранить в той же кодировки.
|
Так в яваскрипте-то одни латинские буквы, он в UTF-8 ничем не отличится от win-1252. Впрочем, добавил туда комментарий по-русски, сохранил в UTF-8. Не помогло...
|
Странным образом юникод несовместим с апострофом. Если заменить его на [^\w], то всё работает.
|
Цитата:
Вообще-то в регулярках спецсимволы экранировать надо. и кодировка тут не при чем ЗЫ. каюсь. когда просматривал регулярку, сам не заметил этого безобразия |
Все что написано вверху неправда.(((
Но кодировка и вправду непричем сел разбиратся подробнее, и выяснил следующее: некоторые браузеры(тестил на лисе. возможно и на других), в HTML-коде приводят все кавычки к двойным. Поэтому твоя первая регулярка не срабатывала, а вторая срабатывает. Я так понимаю вы принимаете эту строку из innerHTML. вот в этом и проблема. При формировании строки в переменную, все срабатывает на ура в любой кодировке |
Цитата:
|
я бы сделал так
name_item=item.getElementsByTagName('INPUT')[0].getAttribute("name") где item -- указатель на объект, который содержит в себе строчку из примера. а затем с name_item безболезнено делаем что хотим |
Часовой пояс GMT +3, время: 21:50. |