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

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

Регулярные выражения это шаблоны, которые используются для поиска строковых комбинаций в тексте. В JavaScript регулярные выражения также являются объектами. Эти шаблоны используются в методах exec и test для RegExp, и методах match, replace, search и split для String. В этой статье рассматриваются регулярные выражения JavaScript.

Замечание. Регулярные выражения не доступны для JavaScript 1.1 и более ранних версий.

Создание регулярных выражений

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

1) Используя литерал регулярных выражений, например:

var re = /ab+c/;

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

2) Вызывая конструктор объекта RegExp, например:

var re = new RegExp("ab+c");

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

Создание шаблона регулярного выражения

Шаблон регулярного выражения состоит из обычных символов, например: /abc/, или из комбинации обычных и специальных символов, например: /ab*c/ или /Chapter (\d+)\.\d*/. В последнем примере присутствуют круглые скобки, которые используются как запоминающее устройство. Выборка, сделанная этой частью шаблона, запоминается для дальнейшего использования, более подробно смотрите в пункте “Использование шаблонов с круглыми скобками”.

Использование простых шаблонов

Простые шаблоны состоят из символов, для которых вам нужно найти точное совпадение. Например, шаблон /abc/ выбирает комбинации символов в строке, только когда символы ‘abc’ встречаются все вместе и именно в таком порядке. Такая выборка сработает для строк “Hi, do you know your abc’s?” и “The latest airplane designs evolved from slabcraft”. В обоих случаях будет выбрана подстрока ‘abc’. Однако, в строке “Grab crab” не будет ничего выбрано, поскольку в ней нет подстроки ‘abc’.

Использование специальных символов

Когда требуется выбрать что-то более сложное, чем простое совпадение символов, например, нужно найти один или более символов ‘b’, или найти пробелы, то тогда шаблон будет содержать специальные символы. Например, шаблон /ab*c/ выбирает комбинации символов, в которых за  символом ‘a’ следует 0 или более символов ‘b’ (* означает выборку 0 или более символов) и далее сразу же идет символ ‘c’. В строке “cbbabbbbcdebc” для данного шаблона будет выбрана подстрока ‘abbbbc’.

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

\     используется:
     для символов, которые обычно интерпретируются буквально. Обратный слэш говорит о том, что следующий символ является специальным и не должен интерпретироваться в буквальном смысле. Например, выражение /b/ выбирает символ ‘b’. Однако, поместив перед b обратный слэш, /\b/, этот символ станет специальным, и будет определять границу слова.
     для символов, которые обычно являются специальными. Обратный слэш говорит о том, что следующий символ не является специальным и должен интерпретироваться в буквальном смысле. Например, символ * является специальным, и означает выборку символа, указанным перед *, который встречается в тексте ноль или более раз. Например, /a*/ делает выборку 0 или более символов a. Чтобы сделать выборку символа * в буквальном смысле, поставьте перед ним обратный слэш. Например, /a\*/ выбирает подстроку ‘a*’.

^     для выборки из начала строки. Если установлен флаг multiline, то также делает выборку сразу же после перевода строки. Например, /^A/ не выберет символ ‘A’ в строке “an A”, но выберет первый символ ‘A’ в строке “An A”.

$     для выборки из конца строки. Если флаг multiline установлен, то также делает выборку сразу перед переводом строки. Например, /t$/ не выберет символ ‘t’ в строке “eater”, но выберет его в строке “eat”.

*     для выборки предыдущего символа ноль или более раз. Например, /bo*/ выберет ‘boooo’ из строки “A ghost booooed” и ‘b’ из строки “A bird warbled”, и не выберет ничего из строки “A goat grunted”.

 

 

developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

Читайте также: