Перейти к содержимому

Регулярные выражения в JS (кратко)

  • автор:

Регуля́рные выраже́ния — язык для поиска подстрок в тексте, основанный на использовании специальных символов.

Шаблоны

Слеши /…/ говорят JavaScript о том, что это регулярное выражение, шаблоны поиска находятся между слешами.

/Витя/ — будет искать слово «Витя»

Флаги

Флаги (например g) пишут так: /…/g.

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

  • i – находит большие и маленькие буквы;
  • g – ищет все совпадения;
  • m – многострочный поиск;
  • s – точка и перевод строки одно и то же;
  • u – поддержка Юникода;
  • y – поиск на конкретной позиции.

 

str.match(/…/)

Метод .match() — ищет это /…/ в этом str, вот так str.match(/…/).

let str = "Эх ты, витя Витя";
alert (str.match ( /витя/gi ) ); // витя,Витя

Найдет все совпадения, благодаря флагу /…/g , и найдет витю и Витю, благодаря флагу /…/i .

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

Наиболее используемые:

  • \d (digit – означает цифра);
  • \s (space – пробелы, табуляции \t, перевода строки \n и другие символы \v, \f и \r );
  • \w (word – слово, буква латинского алфавита или цифра или подчёркивание _ ).

Обратные символьные классы

Обратные символы соответствуют всем другим символам:

  • \D (не цифра);
  • \S (не пробел);
  • \W (не буква).

Точка – это любой символ

. – соответствует любому символу, кроме новой строки.

Юникод

Если текст в формате Юникод, можно искать символы, указав их в \p{…} и обязательно использовать флаг u.

Например, \p{Letter} (или \p{L}) — обозначает букву в любом языке.

Основные категории символов и их подкатегории:

Здесь большой список
  • Буквы L:
    • в нижнем регистре Ll,
    • модификаторы Lm,
    • заглавные буквы Lt,
    • в верхнем регистре Lu,
    • прочие Lo.
  • Числа N:
    • десятичные Nd,
    • римские Nl,
    • прочие No.
  • Знаки пунктуации P:
    • соединители Pc,
    • тире Pd,
    • открывающие кавычки Pi,
    • закрывающие кавычки Pf,
    • открывающие скобки Ps,
    • закрывающие скобки Pe,
    • прочее Po.
  • Отметки M:
    • двоеточия Mc,
    • вложения Me,
    • апострофы Mn.
  • Символы S:
    • валюты Sc,
    • модификаторы Sk,
    • математические Sm,
    • прочие So.
  • Разделители Z:
    • линия Zl,
    • параграф Zp,
    • пробел Zs.
  • Прочие C:
    • контрольные Cc,
    • форматирование Cf,
    • не назначенные Cn,
    • для приватного использования Co,
    • суррогаты Cs.

Полный пример есть на этой странице.

Якоря: начало строки ^ и конец $

Начало строки ^ и конец $.

/^Hello/ — проверит, что строка начинается с Hello

Многострочный режим якорей ^ $, флаг «m»

Если поставить флаг m ( /…/m ), тогда якоря ^ и $ будут искать не только начало/конец текста, но и начало/конец каждой строки в тексте

/^\d/gm — будет искать все (g) первые цифры (^\d) в каждой строке (m)

Граница слова: \b

Граница слова \b – проверка, как ^ и $.

/\bJava\b/ — будет искать слово Java

Экранирование символов

Для поиска символов [ ] \ ^ $ . | ? * + ( ), чтобы они не сработали как спецсимволы поиска, нам нужно экранировать их — добавить перед ними \

«iOs 9.3».match(/\d\.\d/)
\d — найдет цифры
\. — найдет точку

Наборы

[абв] — найдет любой из 3-х символов: ‘a’, ‘б’ или ‘в’.

«ниф наф нуф».match(/н[иау]ф/gi) — найдет ниф,наф,нуф

Диапазоны

[a-z] – будет искать в диапазоне от a до z
[0-5] – цифра от 0 до 5

«Exception 0xAF».match(/x[0-9A-F][0-9A-F]/g) — будет искать «x» и после него два шестнадцатеричных символа 0,1,2…8,9,A,B,C,D,E,F

Исключающие диапазоны

Исключающие диапазоны пишутся так [^…].

[^abc] – любой символ, за исключением ‘a’, ‘b’, или ‘c’.
[^0-9] – любой символ, за исключением цифры.

Экранирование внутри […]

В квадратных скобках некоторые спец-символы можно использовать без экранирования:

  • Символы . + ( ) не нужно экранировать никогда;
  • Тире не надо экранировать в начале или в конце;
  • Символ каретки ^ нужно экранировать только в начале;

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *