Прикладной код

Объект «RegExp»

Объект «RegExp»

Конструктор RegExp создает объект регулярного выражения для сопоставления текста с шаблоном.

Синтаксис

Возможны как литеральная запись, так и запись через конструктор:

/Выражение/Флаг
new RegExp(Выражение[, Флаг])

Параметры

  • Выражение — текст регулярного выражения;
  • Флаг — если определен, принимает любую комбинацию из указанных ниже значений:
    • g — глобальное сопоставление;
    • i — игнорирование регистра при сопоставлении;
    • m — сопоставление по нескольким строкам. Символы начала и конца (^ и $) начинают работать по нескольким строкам. Происходит сопоставление с началом или концом каждой строки. Строки разделяются символами \n или \r.

Описание

Если регулярное выражение создается при помощи конструктора new, помните, что обратные слеши (\) должны экранироваться. Например:

var expr = new RegExp('\\w', 'ig');

При использовании литерального формата, экранировать слеши необходимости нет:

var expr = /\w/gi;

Виды символов

В регулярных выражениях различают следующие виды символов:

Обычные символы

  • A..z — английские буквы от A до z, строчные и заглавные;
  • 0..9 — цифры;
  • { } — фигурные скобки, кроме случаев, когда они составляют группу вида {n,m} (где n и m — числа) и ее вариации;
  • = — равно;
  • < — меньше;
  • > — больше;
  • - — минус;
  • , — запятая.

Специальные символы

  • ( ) — круглые скобки;
  • [ ] — квадратные скобки;
  • \ — обраный слеш;
  • . — точка;
  • ^ — степень;
  • $ — знак доллара;
  • | — вертикальная черта;
  • ? — вопросительный знак;
  • + — плюс.

Методы

  • — возвращает строковое представление регулярного выражения.
  • — выполняет поиск сопоставления регулярного выражения указанной строке. Возвращает true или false.
  • — выполняет поиск сопоставления регулярного выражения в указанной строке. Возвращает массив с результатами или null.

Примеры

Использование регулярных выражений для смены формата данных.

В примере используется метод replace() экземпляра строки String для сопоставления с именем в формате имя фамилия. Метод выводит его в формате фамилия, имя. В тесте замены код использует заменители $1 и $2. Они заменяются на результаты соответствующих сопоставившихся подгрупп регулярного выражения.

var re = /(\w+)\s(\w+)/;
var str = 'Ivan Petrov';
var newstr = str.replace(re, '$2, $1');
alert(newstr);

// пример с русскими буквами  
var re = /([а-яё]+)\s([а-яё]+)/i;
var str = 'Иван Петров';
var newstr = str.replace(re, '$2, $1');
alert(newstr); // Пример выведет «Petrov, Ivan» и «Петров, Иван»

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

var text = 'Некоторый текст\nЕщё текст\r\nИ ещё\rЭто конец';
var lines = text.split(/\r\n|\r|\n/);
alert(lines); // выведет [ 'Некоторый текст', 'Ещё текст', 'И ещё', 'Это конец' ]

Использование регулярных выражений на нескольких строках.

var s = 'Please yes\nmake my day!';
s.match(/yes.*day/);
// Вернёт null
s.match(/yes[^]*day/);
// Вернёт 'yes\nmake my day'