Шпаргалка по регулярке

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


Доброго времени суток, друзья!

Представляю Вашему вниманию перевод статьи «Regex Cheat Sheet» автора Emma Bostian.

Регулярные выражения или «regex» используются для поиска совпадений в строке.

Ищем совпадение по шаблону

Используем метод .test()

const testString = 'My test string'
const testRegex = /string/
testRegex.test(testString) // true

Ищем совпадение по нескольким шаблонам

Используем | — альтернацию

const regex = /yes|no|maybe/

Игнорируем регистр

Используем флаг i

const caseInsensitiveRegex = /ignore case/i
const testString = 'We use the i flag to iGnOrE CasE'
caseInsensitiveRegex.test(testString) // true

Извлекаем первое совпадение в переменную

Используем метод .match()

const match = 'Hello World!'.macth(/hello/i) // 'Hello'


Извлекаем все совпадения в массив

Используем флаг g

const testString = 'Repeat repeat rePeAt'
const regexWithAllMatches = /Repeat/gi
testString.match(regexWithAllMatches) // ['Repeat', 'repeat', 'rePeAt']

Ищем любой символ

Используем символ.

const regexWithWildCard = /.at/gi
const testString = 'cat BAT cupcake fAt mat dog'
const allMatchingWords = testString.match(regexWithWildCard) // ['cat', 'BAT', 'fAt', 'mat']

Ищем один вариативный символ

Используем классы, позволяющие в [ ] определять группу искомых символов

const regexWithCharClass = /[cfm]at/g
const testString = 'cat fat bat mat'
const allMatchingWords = testString.match(regexWithCharClass) // ['cat', 'fat', 'mat']

Ищем буквы алфавита

Используем диапазон [a-z]

const regexWithCharRange = /[a-e]at/
const catString = 'cat'
const batString = 'bat'
const fatString = 'fat'

regexWithCharRange.test(catString) // true
regexWithCharRange.test(batString) // true
regexWithCharRange.test(fatString) // false

Ищем определенные числа или буквы

Используем диапазон [a-z0-9]

const regexWithLetterAndNumberRange = /[a-z0-9]/ig
const testString = 'Emma19382'
testString.macth(regexWithLetterAndNumberRange) // true

Ищем единственный неизвестный символ

Для исключения ненужных символов используем символ ^ — отрицательный набор

const allCharsNotAllowed = /[^aeiou]/gi
const allCharsOrNumbersNotAllowed = /^aeiou0-9/gi

Ищем символы, встречающиеся в строке один или более раз

Используем символ +

const oneOrMoreAsRegex = /a+/gi
const oneOrMoreSsRegex = /s+/gi
const cityInFlorida = 'Tallahassee'

cityInFlorida.match(oneOrMoreAsRegex) // ['a', 'a', 'a']
cityInFlorida.match(oneOrMoreSsRegex) // ['ss']

Ищем символы, встречающиеся в строке ноль или более раз

Используем символ *

const zeroOrMoreOsRegex = /hi*/gi
const normalHi = 'hi'
const happyHi = 'hiiiiii'
const twoHis = 'hiihii'
const bye = 'bye'

normalHi.match(zeroOrMoreOsRegex) // ['hi']
happyHi.match(zeroOrMoreOsRegex) // ['hiiiiii']
twoHis.match(zeroOrMoreOsRegex) // ['hii', 'hii']
bye.match(zeroOrMoreOsRegex) // null

«Ленивый» поиск совпадений

Ищем наименьшую часть строки, удовлетворяющую заданному условию.
Regex по умолчанию является жадным (ищет самую длинную часть строки, удовлетворяющую условию). Используем символ?

const testString = 'catastrophe'
const greedyRegex = /c[a-z]*t/gi
const lazyRegex = /c[a-z]*?t/gi

testString.match(greedyRegex) // ['catast']
testString.match(lazyRegex) // ['cat']

Ищем с помощью стартового шаблона (шаблона начала строки)

Для поиска строки по стартовому шаблону используем символ ^ (снаружи набора символов в [ ] в отличие от отрицательного набора)

const emmaAtFrontOfString = 'Emma likes cats a lot.'
const emmaNotAtFrontOfString = 'the cats Emma likes are fluffy'
const startingStringRegex = /^Emma/

startingStringRegex.test(emmaAtFrontOfString) // true
startingStringRegex.test(emmaNotAtFrontOfString) // false

Ищем с помощью завершающего шаблона (шаблона конца строки)

Для поиска строки по завершающему шаблону используем символ $

const emmaAtBackOfString = 'The cats do not like Emma'
const emmaNotAtBackOfString = 'Emma loves the cats'
const endingStringRegex = /Emma$/

endingStringRegex.test(emmaAtBackOfString) // true
endingStringRegex.test(emmaNotAtBackOfString) // false

Ищем все буквы или числа

Используем \w

const longHand = /[A-za-z0-9_]+/
const shortHand = /\w+/
const numbers = '42'
const myFavouriteColor = 'magenta'

longHand.test(numbers) // true
shortHand.test(numbers) // true
longHand.test(myFavouriteColor) // true
shortHand.test(myFavouriteColor) // true

Ищем любые символы, за исключением букв и чисел

Используем \W

const noAlphaNumericCharRegex = /\W/gi
const weirdCharacters = '!_$!'
const alphaNumericCharacters = 'ab24EF'

noAlphaNumericCharRegex.test(weirdCharacters) // true
noAlphaNumericCharRegex.test(alphaNumericCharacters) // true

Ищем числа

Используем \d вместо [0-9]

const digitsRegex = /\d/g
const stringWithDigits = 'My cat eats $20.00 worth of food a week'

stringWithDigits.match(digitsRegex) // ['2', '0', '0', '0']

Ищем не числа

Используем \D

const nonDigitsRegex = /\D/g
const stringWithLetters = '101 degrees'

stringWithLetters.match(nonDigitsRegex) // [' ', 'd', 'e', 'g', 'r', 'e', 'e', 's']

Ищем пробелы

Используем \s

const sentenceWithWhitespace = 'I like cats!'
const spaceRegex = /\s/g
spaceRegex.match(sentenceWithWhitespace) // [' ', ' ']

Ищем любые символы, за исключением пробелов

Используем \S

const sentenceWithWhitespace = 'C a t'
const nonWhitespaceRegex = /\S/g
sentenceWithWhitespace.match(nonWhitespaceRegex) // ['C', 'a', 't']

Ищем определенное количество символов

Используем {от, до} — квантификатор

const regularHi = 'hi'
const mediocreHi = 'hiii'
const superExcitedHey = 'heeeeyyyyy!!!'
const excitedRegex = /hi{1,4}/

excitedRegex.test(regularHi) // true
excitedRegex.test(mediocreHi) // true
excitedRegex.test(superExcitedHey) // false

Ищем минимальное количество символов

Используем {от, }

const regularHi = 'hi'
const mediocreHi = 'hiii'
const superExcitedHey = 'heeeeyyyyy!!!'
const excitedRegex = /hi{2,}/

excitedRegex.test(regularHi) // false
excitedRegex.test(mediocreHi) // true
excitedRegex.test(superExcitedHey) // false

Ищем точное количество символов

Используем {число символов}

const regularHi = 'hi'
const mediocreHi = 'hiii'
const superExcitedHey = 'heeeeyyyyy!!!'
const excitedRegex = /hi{2}/

excitedRegex.test(regularHi) // false
excitedRegex.test(mediocreHi) // true
excitedRegex.test(superExcitedHey) // false

Ищем ноль или один символ

Используем ? после искомого символа

const britishSpelling = 'colour'
const americanSpelling = 'Color'
const langRegex = /coloru?r/i

langRegex.test(britishSpelling) // true
langRegex.test(americanSpelling) // true

Прим. пер.: шпаргалка от MDN.

Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.
Источник: https://habr.com/ru/post/506994/


Интересные статьи

Интересные статьи

Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Кто бы что ни говорил, но я считаю, что изобретение велосипедов — штука полезная. Использование готовых библиотек и фреймворков, конечно, хорошо, но порой стоит их отложить и создать ...
Один преподаватель как-то сказал мне, что если поискать аналог программиста в мире книг, то окажется, что программисты похожи не на учебники, а на оглавления учебников: они не помнят всего, но зн...
Всем привет. Когда я искал информацию о журналировании (аудите событий) в Bitrix, на Хабре не было ни чего, в остальном рунете кое что было, но кто же там найдёт? Для пополнения базы знаний...
Битрикс24 — популярная в малом бизнесе CRM c большими возможностями даже на бесплатном тарифе. Благодаря API Битрикс24 (даже в облачной редакции) можно легко интегрировать с другими системами.