| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Компилить ли RegExp`ы |
| Автор: Се ля ви 31.1.2005, 12:43 | ||
Не очень понятен следующий момент: в чём смысл данной конструкции:
(взято с http://wdh.suncloud.ru/js12.htm#hcompile ) Т.е. если мы создаём RegExp - то задаём регулярное выражение строкой в параметре, но если компилируем - почему-то само выражение опять задавать должны... В Java, например, RegExp как раз-таки и создаётся в момент компиляции - всё логично - выражение вводим один раз. А тут? Получается, мы можем задать разные выражения при создании и компиляции - тогда по какому выражению из них будет происходить поиск? И вообще, кто пользовал - насколько компиляция RegExp`ов в JS убыстряет поиск? Ведь смысл, насколько я понял, именно в скорости обработки... |
| Автор: Sardar 31.1.2005, 15:22 | ||||
По идее "не очень умные люди", расработчики нетскейпа придумали 2 типа регекспов, компилируемые и не компилируемые. Компилируемые не могут изменятся и имеют синтаксис:
Не компилируемые реги создаются через обьект RegExp:
Второй способ не компилирует рег, а держит его текстом. При каждом использовании он компилируется. Это справедливо не для всех браузеров, более новые браузеры таких странных различий не имеют, хотя точно не уверен. Первые по идее быстрее, хотя миллисекунды вряд ли заметны. Первый синтаксис также может не восприниматся старыми Операми и прочими убогими браузерами. Метод compile у регов в первые вижу, по идее компилирует не скомпиленный рег изменяя его содержимое. Сейчас нет возможности проверить, но скорее всего никто кроме ИЕ метод подерживать не будет. Зачем такой изврат? |