Мастер-классы по Javascript Екатеринбург Ростов-на-Дону Москва Узнать больше...
Содержание (скрыть) Содержание (показать)

Регулярные выражения [в работе]

Статья - в процессе написания. Всё будет дописано, но позже.

Регулярные выражения — мощный способ поиска и замены строк. Они существуют во многих языках.

В JavaScript используется упрощённый синтаксис, похожий на стандарт PCRE.

Введение

Регулярные выражения –- мощное средство поиска и замены в строке. В JavaScript регулярные выражения встроены в методы поиска (search), выявления совпадений (match) и замены в строке (replace).

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

Допустим, нам нужно найти цифру в строке. Не какую-то конкретную, а просто любую цифру.

Можно, конечно, сделать 10 попыток — искать сначала "0", потом "1", "2" и так далее, но регулярные выражения позволяют решить задачу более изящно.

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

Ряд символов в регулярных выражениях имеет особое значение: [ \ ^ $ . | ? * + ( ).

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

Чтобы использовать специальный символ в качестве обычного, он должен быть экранирован. Или, другими словаии, перед символом должен быть обратный слэш '\'.

Например, нам нужно найти точку '.'.

Флаги

Регулярные выражения могут иметь флаги, которые влияют на поиск

Наборы и диапазоны символов

Несколько символов или символьных классов можно сгруппировать в квадратные скобки […] Такая группировка означает «искать любой символ из указанных в […]».

Например, [еао] означает любой символ из этих трёх: 'а', 'е', или 'о'.

Цифровые квантификаторы

Скажем, нам нужно найти трёхзначное число. Это просто сделать с помощью \d:

showMatch( "Мне 100 лет", /\d\d\d/ )  // 100

Но давайте пойдём дальше. Что, если нам нужно найти пятизначное число? Неужели придётся повторять \d пять раз: \d\d\d\d\d?

К счастью, есть более красивое решение.

Quantifiers +, * and ?

There are short quantifiers '+', '*' and '?', which are used very widely.

Basically, they are convenient shortcuts for numeric quantifiers:

Greedy and Lazy

  1. The searching algorithm
  2. Lazy mode
  3. Alternative approach

Let’s get under the hood of regexp engine and see how the search is performed. The understanding is essential for writing anything more complex than /\d/.

Ahchors and multiline mode

  1. Multiline mode

The caret '^' and the dollar '$' symbols have special meaning in a regexp. They are called anchors.

The caret '^' matches at text start and the dollar '$' matches at text end.

Word boundary

Another position check is a word boundary \b. It doesn’t match a character, but matches in situations when a wordly character follows a non-wordly or vice versa. A «non-wordly» may also be text start or end.

Infinite backtracking problem

The backtracking nature of regular expressions in JavaScript (and most other languages which use same type of regexp processing) may lead extremely long or almost infinite searching time.

Groups

A part of the regular expression can be grouped together in brackets (...).

Quantifiers are applied to whole group instead of just one char.

Alternation

Alternation is denoted by the vertical line '|'. It allows to choose between multiple variants.

Practice

Here you found tasks which help in understanding regexp construction principles.


Комментарии

  1. Приветствуются комментарии, содержащие дополнения и вопросы по статье, и ответы на них.
  2. Если ваш комментарий касается задачи -- откройте её в отдельном окне и напишите там.
  3. Комментарии без смысла, с рекламой или не о статье вообще - удаляются.
Наверх

Содержание

Реклама

Нашли опечатку?

Нашли опечатку на сайте? Что-то кажется странным?
Выделите соответствующий текст и нажмите Ctrl+Enter!

Последние Комментарии

Помоги другим!

Помоги другим узнать о хорошей статье!