Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компилить ли RegExp`ы, и зачем их при этом повторять? 
:(
    Опции темы
Се ля ви
Дата 31.1.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 5
Всего: 127



Не очень понятен следующий момент: в чём смысл данной конструкции:
Код
var r = new RegExp("[A-Z]", "g");
r.compile("[a-z]", "g");

(взято с http://wdh.suncloud.ru/js12.htm#hcompile )

Т.е. если мы создаём RegExp - то задаём регулярное выражение строкой в параметре, но если компилируем - почему-то само выражение опять задавать должны... smile Вопрос - зачем 2 раза одно и то же?

В Java, например, RegExp как раз-таки и создаётся в момент компиляции - всё логично - выражение вводим один раз. А тут?

Получается, мы можем задать разные выражения при создании и компиляции - тогда по какому выражению из них будет происходить поиск?

И вообще, кто пользовал - насколько компиляция RegExp`ов в JS убыстряет поиск? Ведь смысл, насколько я понял, именно в скорости обработки...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Sardar
Дата 31.1.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



По идее "не очень умные люди", расработчики нетскейпа придумали 2 типа регекспов, компилируемые и не компилируемые. Компилируемые не могут изменятся и имеют синтаксис:
Код
var reg=/[a-z]+\.[0-9]+/ig;
alert(reg.test("privet.10"));

Не компилируемые реги создаются через обьект RegExp:
Код
var reg=new RegExp("."+name+".","g");
alert(reg.exec(string));

Второй способ не компилирует рег, а держит его текстом. При каждом использовании он компилируется. Это справедливо не для всех браузеров, более новые браузеры таких странных различий не имеют, хотя точно не уверен. Первые по идее быстрее, хотя миллисекунды вряд ли заметны. Первый синтаксис также может не восприниматся старыми Операми и прочими убогими браузерами.

Метод compile у регов в первые вижу, по идее компилирует не скомпиленный рег изменяя его содержимое. Сейчас нет возможности проверить, но скорее всего никто кроме ИЕ метод подерживать не будет. Зачем такой изврат? smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1760 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.