Что такое RegEx (регулярное выражение)? Это поиск шаблона в тексте. Мы обычно используем для проверки текста или поиска по тексту. Поначалу может быть сложно разобраться с этими мощными инструментами, но они определенно сделают вашу жизнь проще.

Как объявить?

Буквальный способ - просто установить выражение между двумя косыми чертами / /

const reg = /cat/;

RegEx будет искать конкретное слово «кошка», и, поскольку порядок имеет значение, вы не найдете никакого другого слова (например, «tac»). По умолчанию регулярное выражение находит только первое совпадение, однако решение существует, вам нужно добавить флаг после косой черты.

const reg = /your Expression/Flag

Наиболее распространенным является g, что означает глобальный, и он будет соответствовать всем найденным шаблонам, или i без учета регистра.

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

Мета персонажи

.[{()\^$?*+

Эти метасимволы имеют другое значение, и чтобы включить их в ваше выражение, вам придется «экранировать» их, добавив перед ними обратную косую черту .

to match google.com
//RegEx=>  /google\.com/

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

. any character (except newline)
\d digit(0-9).                        \D not a digit
\w word characters (a-z,A-Z,0,9,_).   \W Not Word
\s whitespace (tabs, line breaks)     \S Not whitespace
caret symbol( ^ ) start of the strings  ^hello 
dollars sign ($)  end of the string     world$ 

Якоря

caret symbol( ^ ) start of the strings  ^hello 

dollars sign ($)  end of the string     world$
for example haha ha
^ha => ha haha
ha$ => ha haha

Номер телефона

Все кажется абстрактным, давайте попрактикуемся, чтобы понять больше. Если мы хотим сопоставить эти номера телефонов:

323.232.4343 
323-232-4343 
3 digits then . or -  3 digits again . or - finally 4 digits
/\d\d\d/  323.232.4343 - 323-232-4343
\d is a digit by setting 3 in a row we match the 3 first digits
/\d\d\d./  323.232.4343 - 323-232-4343
. by adding dot we will match any character
We can get  /\d\d\d.\d\d\d.\d\d\d\d/g that match our phone number

Квантификаторы и скобки

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

Brackets 
[] match any value in the bracket 
[-.] will match a dot or dash  
[1-7] match any number between 1 to 7
[a-z] any lowercase letters
[a-zA-Z] any letters lowercase and uppercase
Quantifiers 
+  is 1 or more
?  is 0 or one
{3} is the exact number 
{3-4} is a range of number from the min to max 
also important 
| OR will match the 2 value 
() group with parentheses
Matching phone number with brackets and quantifiers will look like:
/\d{3}/ we select a digit but 3 times 
/\d{3}[-.]/ after 3 digits a value that is dash or dot 
finally we get 
/\d{3}[-.]\d{3}[-.]\d{4}[-.]/g

Практика ведет к прогрессу

Mr. Smith
Mr. T
Ms Davis
Mrs. 
answer = /M(r|s|rs)\.?\s[A-Z]\w*/g
let's read through for a better understanding 
-We Start with the first Letter M followed by r or s or s 
- \. followed by a dot but the ? quantifier will check if there is 0 or more
- \s for a whitespace 
- [A-Z] for any capital letter
-\w* for any word and the * quantifier for 0 or more

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

Чтобы протестировать и создать собственное регулярное выражение: https://regexr.com/

Шпаргалка: https://fireship.io/lessons/regex-cheat-sheet-js/

Топ-15 регулярных выражений: https://digitalfortress.tech/tricks/top-15-commonly-used-regex/