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

от автора

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

Представляю Вашему вниманию перевод статьи «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/


Комментарии

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

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