Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2008, 21:01
Новичок на форуме
Отправить личное сообщение для Yury900 Посмотреть профиль Найти все сообщения от Yury900
 
Регистрация: 11.05.2008
Сообщений: 3

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
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2008, 21:22
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 14.03.2008
Сообщений: 169

попробуй сам javascript сохранить в той же кодировки.
Ответить с цитированием
  #3 (permalink)  
Старый 12.05.2008, 12:45
Новичок на форуме
Отправить личное сообщение для Yury900 Посмотреть профиль Найти все сообщения от Yury900
 
Регистрация: 11.05.2008
Сообщений: 3

Так в яваскрипте-то одни латинские буквы, он в UTF-8 ничем не отличится от win-1252. Впрочем, добавил туда комментарий по-русски, сохранил в UTF-8. Не помогло...
Ответить с цитированием
  #4 (permalink)  
Старый 12.05.2008, 16:22
Новичок на форуме
Отправить личное сообщение для Yury900 Посмотреть профиль Найти все сообщения от Yury900
 
Регистрация: 11.05.2008
Сообщений: 3

Странным образом юникод несовместим с апострофом. Если заменить его на [^\w], то всё работает.
Ответить с цитированием
  #5 (permalink)  
Старый 12.05.2008, 16:32
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Yury900
Странным образом юникод несовместим с апострофом

Вообще-то в регулярках спецсимволы экранировать надо. и кодировка тут не при чем
ЗЫ. каюсь. когда просматривал регулярку, сам не заметил этого безобразия
Ответить с цитированием
  #6 (permalink)  
Старый 12.05.2008, 16:58
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Все что написано вверху неправда.(((
Но кодировка и вправду непричем
сел разбиратся подробнее, и выяснил следующее:
некоторые браузеры(тестил на лисе. возможно и на других), в HTML-коде приводят все кавычки к двойным. Поэтому твоя первая регулярка не срабатывала, а вторая срабатывает.
Я так понимаю вы принимаете эту строку из innerHTML. вот в этом и проблема.
При формировании строки в переменную, все срабатывает на ура в любой кодировке
Ответить с цитированием
  #7 (permalink)  
Старый 12.05.2008, 22:37
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
некоторые браузеры(тестил на лисе. возможно и на других), в HTML-коде приводят все кавычки к двойным.
Угу, а еще в верхний регистр переводят названия тегов. А ИЕ у некоторых значений аттрибутов вообще кавычки убирает. Так что по-аккуратнее надо со связкой RegExp-innerHTML.
Ответить с цитированием
  #8 (permalink)  
Старый 13.05.2008, 00:19
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

я бы сделал так
name_item=item.getElementsByTagName('INPUT')[0].getAttribute("name")

где item -- указатель на объект, который содержит в себе строчку из примера.
а затем с name_item безболезнено делаем что хотим
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка поля HTML-формы с помощью RegExp dios jQuery 0 27.08.2008 15:53