Объект RegExp. Регулярные выражения

Последнее обновление: 1.11.2015

Регулярные выражения представляют шаблон, который используется для поиска или модификации строки. Для работы с регулярными выражениями в JavaScript определен объект RegExp.

Определить регулярное выражение можно двумя способами:

var myExp = /hello/;
var myExp = new RegExp("hello");

Используемое здесь регулярное выражение довольно простое: оно состоит из одного слова "hello". В первом случае выражение помещается между двумя косыми чертами, а во втором случае используется конструктор RegExp, в который выражение передается в виде строки.

Методы RegExp

Чтобы определить, соответствует ли регулярное выражение строке, в объекте RegExp определен метод test(). Этот метод возвращает true, если строка соответствует регулярному выражению, и false, если не соответствует.

var initialText = "hello world!";
var exp = /hello/;
var result = exp.test(initialText);
document.write(result + "<br/>"); // true

initialText = "beautifull wheather";
result = exp.test(initialText);
document.write(result); // false - в строке initialText нет "hello"

Аналогично работает метод exec - он также проверяет, соответствует ли строка регулярному выражению, только теперь данный метод возвращает ту часть строки, которая соответствует выражению. Если соответствий нет, то возвращается значение null.

var initialText = "hello world!";
var exp = /hello/;
var result = exp.exec(initialText);
document.write(result + "<br/>"); // hello

initialText = "beautifull wheather";
result = exp.exec(initialText);
document.write(result); // null

Группы символов

Регулярное выражение не обязательно состоит из обычных строк, но также может включать специальные элементы синтаксиса регулярных выражений. Один из таких элементов представляют группы символов, заключенные в квадратные скобки. Например:

var initialText = "обороноспособность";
var exp = /[абв]/;
var result = exp.test(initialText);
document.write(result + "<br/>"); // true

initialText = "город";
result = exp.test(initialText);
document.write(result); // false

Выражение [абв] указывает на то, что строка должна иметь одну из трех букв.

Если нам надо определить наличие в строке буквенных символов из определенного диапазона, то можно разу задать этот диапазон:

var initialText = "обороноспособность";
var exp = /[а-я]/;
var result = exp.test(initialText);
document.write(result + "<br/>"); // true

initialText = "3di0789";
result = exp.test(initialText);
document.write(result); // false

В данном случае строка должна содержать хотя бы один символ из диапазона а-я.

Если, наоборот, не надо, чтобы строка имела только определенные символы, то необходимо в квадратных скобках перед перечислением символов ставить знак ^:

var initialText = "обороноспособность";
var exp = /[^а-я]/;
var result = exp.test(initialText);
document.write(result + "<br/>"); // false

initialText = "3di0789";
exp = /[^0-9]/;
result = exp.test(initialText);
document.write(result); // true

В первом случае строка не должна иметь только символы из диапазона а-я, но поскольку строка "обороноспособность" состоит только из символов из этого диапазона, то метод test() возвращает false, то есть регулярное выражение не соответствует стоке.

Во втором случае ("3di0789") строка не должна состоять только из цифровых символов. Но так как в строке также есть и буквы, то строка соответствует регулярному выражению, поэтому метод test возвращает значение true.

При необходимости мы можем собирать комбинации выражений:

var initialText = "дома";
var exp = /[дт]о[нм]/;
var result = exp.test(initialText);
document.write(result); // true

Выражение [дт]о[нм] указывает на те строки, которые могут содержать подстроки "дом", "том", "дон", "тон".

Свойства выражений

  • Свойство global позволяет найти все подстроки, которые соответствуют регулярному выражению. По умолчанию при поиске подстрок регулярное выражение выбирает первую попавшуюся подстроку из строки, которая соответствует выражению. Хотя в строке может быть множество подстрок, которые также соответствуют выражению. Для этого применяется данное свойство в виде символа g в выражениях

  • Свойство ignoreCase позволяет найти подстоки, которые соответствуют регулярному выражению, вне зависимости от регистра символов в строке. Для этого в регулярных выражениях применяется символ i

  • Свойство multiline позволяет найти подстроки, которые соответствуют регулярному выражению, в многострочном тексте. Для этого в регулярных выражениях применяется символ m

Например:

var initialText = "привет Мир";
var exp = /мир/;
var result = exp.test(initialText); // false

Здесь совпадения строки с выражением нет, так как "Мир" отличается от "мир" по регистру. В этом случае надо изменить регулярное выражение, добавив в него свойство ignoreCase:

var exp = /мир/i;

Ну и также мы можем использовать сразу несколько свойств:

var exp = /мир/ig;
Помощь сайту
WebMoney
  • P378451176208
  • Z280152397659
ЮMoney/Яндекс-Деньги
  • 410011174743222
PayPal
  • metanit22@mail.ru
Перевод на карту
  • Номер карты: 4048415020898850