=> Главная База Знаний Оптимизация сайта Регулярные выражения


Регулярные выражения

Регулярные выражения

В JavaScript есть несколько способов проверить, удовлетворяет ли строка заданному шаблону:

// 1. Объявляем объект в виде регулярного выражения

var RegExp = '/script/gi';

// и ищем в элементе массива совпадение с заданным шаблоном

items[i].nodeName.search(RegExp);

// 2. можно просто проверять соответствие строке,

// а не искать индекс подстроки

items[i].nodeName.match(RegExp);

// 3. Можно обойтись без объявления самого регулярного выражения

items[i].nodeName.match(/script/gi);

// 4. Можно задавать регулярное выражение без глобального модификатора,

// ведь мы ищем любое (=первое) совпадение шаблона

items[i].nodeName.match(/script/i);

// 5. С тем же успехом мы можем выполнить шаблон

/script/i.exec(items[i].nodeName);

// 6. Наконец, можно протестировать сам шаблон на нахождение в строке

/script/i.test(items[i].nodeName);

Давайте рассмотрим, что из них работает быстрее всего. Для этого запустим немного модифицированный набор тестов из раздела выше (опять по 10000 раз для всего DOM-дерева). Получим следующие результаты:

Таблица 7.4 . Различные варианты выполнения регулярного выражения, результаты в миллисекундах

Как мы видим, в данном случае создание нового регулярного выражения — весьма ресурсоемкий процесс, поэтому в большинстве случаев лучше обходиться без него. В остальном все браузеры ведут себя достаточно ровно при сопоставлении match, exec и test.