7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Regular Expressions

Чит-лист по регулярным выражениям в JavaScript

Scroll to top
Read Time: 6 mins

Russian (Pусский) translation by Anna Goorikova (you can also view the original English article)

Для успешной работы с регулярными выражениями, вы должны знать, что делает каждый специальный символ, флаг и метод. Это чит-лист по регулярным выражениям, к которому вы можете обращаться при попытке вспомнить, как работает метод, специальный символ или флаг.

Определение регулярного выражения в JavaScript

Существует два способа определения регулярного выражения в JavaScript.

  • var rgx = /^(\d+)/ - Вы можете использовать литерал регулярных выражений и заключить шаблон между слэшами. Это оценивается во время компиляции и обеспечивает лучшую производительность, если регулярное выражение остается постоянным.
  • var rgx = new RegExp('^(\d+)') - Функция-конструктор полезна, когда регулярное выражение может программно меняться. Они компилируются во время выполнения.

Соответствие определенному набору символов

Следующие последовательности могут использоваться для соответствия определенному набору символов.

  • \w - Соответствует всем символам "слов". Символы слов являются буквенно-цифровыми (a-z, A-Z символы и подчеркивание).
  • \W - Соответствует символам "не слов". Все, кроме буквенно-цифровых символов и подчеркивания.
  • \d - Соответствует символам "цифр". Любая цифра от 0 до 9.
  • \D - Соответствует символам "не цифр". Все, кроме с 0 до 9.
  • \s - Соответствует символам пробела. Это включает пробелы, символы табуляции и разрывы строк.
  • \S - Соответствует всем остальным символам, кроме пробелов.
  • . - Соответствует любому символу, кроме разрывов строк.
  • [A-Z] - Соответствует символам в диапазоне. Например, [A-E] будет соответствовать A, B, C, D и E.
  • [ABC] - Соответствует символу в заданном наборе. Например, [AMT] будет соответствовать только A, M и T.
  • [^ABC] - Соответствует всем символам, отсутствующим в заданном наборе. Например, [^A-E] будет соответствовать всем символам, кроме A, B, C, D и E.

Указание количества символов для соответствия

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

  • + - Соответствует одному или нескольким вхождениям предыдущего символа. Например, \w+ вернет ABD12D в виде единственного соответствия вместо шести разных совпадений.
  • * - Соответствует нулю или более вхождениям предыдущего символа. Например, b\w* соответствует полужирным частям в b, bat, bajhdsfbfjhbe. В целом, он соответствует нулю или более символам "слова" после "b".
  • {m, n} - Соответствует не менее m и не более n вхождений предыдущего символа. {m,} будет соответствовать не менее m вхождений, и верхнего предела для совпадения не будет. {k} будет соответствовать точно k вхождениям предыдущего символа.
  • ? - Соответствует нулю или одному вхождению предыдущего символа. Например, это может быть полезно при поиска двух вариантов написания для одной и той же работы. Например, /behaviou?r/ будет соответствовать как behavior, так и behaviour.
  • | - Соответствует выражению до или после "pipe" символа. Например, /se(a|e)/ соответствует как see, так и sea.

Скобочные группы в регулярных выражениях

  • (ABC) - Это сгруппирует несколько символов вместе и запомнит подстроку, соответствующую им, для последующего использования. Это называется скобочной группой.
  • (?:ABC) - Это также объединяет несколько символов вместе, но не запоминает совпадение. Это незапоминаемая скобочная группа.
  • \d+(?=ABC) - Это будет соответствовать символу(-ам), предшествующему (?=ABC), только если за ним следует ABC. Часть ABC не будет включена в массив совпадений. Часть \d - это всего лишь пример. Это может быть любая строка регулярного выражения.
  • \d+(?!ABC) - Это будет соответствовать символу(-ам), предшествующему (?!ABC), только если за ним не следует ABC. Часть ABC не будет включена в массив совпадений. Часть \d - это всего лишь пример. Это может быть любая строка регулярного выражения.

Другие символы регулярных выражений

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

  • ^ - Ищет регулярное выражение в начале текста или в начале каждой строки, если включен многострочный флаг.
  • $ - Ищет регулярное выражение в конце текста или в конце каждой строки, если включен многострочный флаг.
  • \b - Предыдущий символ соответствует, только если это граница слова.
  • \B - Предыдущий символ соответствует только в том случае, если граница слова отсутствует.

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

Флаги могут использоваться для контроля того, как следует интерпретировать регулярное выражение. Вы можете использовать флаги по одному или вместе в любом порядке. Это пять флагов, которые доступны в JavaScript.

  • g - Искать все совпадения данного выражения в строке вместо того, чтобы возвращать только первый.
  • i - Сделать поиск без учета регистра, чтобы между словами, такими как Apple, aPPLe и apple, не было разницы.
  • m - Этот флаг гарантирует, что маркеры ^ и $ ищут совпадение в начале или конце каждой строки, а не всего текста.
  • u - Этот флаг включает поддержку Unicode в вашем регулярном выражении.
  • y - Этот флаг скажет JavaScript искать соответствия только с текущей позиции в целевой строке.

Вы можете указать флаги для регулярного выражения в JavaScript либо путем добавления их в конец литерала регулярных выражений, либо путем передачи их в конструктор RegExp. Например, /cat/i соответствует всем вхождениям cat независимо от случая, и RegExp ("cat", 'i') делает то же самое.

Полезные методы регулярных выражений в JavaScript

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

  • test() - Проверить, содержит ли основная строка подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Метод возвращает true при успешном совпадении и false в противном случае.

В приведенном выше примере регулярное выражение должно искать слово apples только в конце строки. Вот почему мы получили false в первом случае.

  • search() - Проверить, содержит ли основная строка подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Он возвращает индекс совпадения при успехе и -1 в противном случае.

В этом случае первое регулярное выражение возвращает -1, потому что не было точного совпадения с учетом регистра.

  • match() - Ищет, если основная строка содержит подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Если флаг g включен, в качестве массива будут возвращены несколько совпадений.
  • exec() - Поиск, если основная строка содержит подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Возвращенный массив будет содержать информацию о совпадениях и скобочных группах.
  • replace() - Найти подстроку, соответствующую заданному шаблону, и заменить ее на предоставленную заменяющую строку.
  • split() - Этот метод позволит вам разбить основную строку на подстроки на основе разделителя, указанного как регулярное выражение.

Заключение

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

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

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.