Их не нужно понимать, ты просто читаешь их.
Очень просто.
Есть ограничители
^ - начало строки
$ - конец строки
| - символ "или" - используется между символами или группами, чтобы показать "или то или другое"
Выглядит так:
/^(([a-z]+)|([а-я]+))$/
читается как строка, состоящая из любого количества букв от a до z (английских маленьких букв) или любого количества русских букв, не включая ё, на выходе будет три выборки - первая - вся строка, вторая строка из английских букв, третья - строка из русских.
Но конкретно этот код еще может быть переписан так:
/^([a-zа-я]+)$/
Поскольку нет смысла разделять русские и английские в отдельные группы. Так просто короче и легче.
Есть символы
. - это "точка". любой символ, не включая совсем некоторых типа табуляций, переносов строк разных там
\w - это слово - вот прям любая конструкция из любого количества букв
(есть другие разные)
Есть количественные знаки
.* - звездочка означает или есть, или нет, в любом количестве
.+ - плюс - обязательно есть, хотя бы одна "точка"
.{2,} - от двух и до бесконечности "точек"
.{2,5} - от двух и до пяти "точек"
Есть шаблоны
[a-zA-Z] - любая английская буква. просто же?
[a-яА-ЯёЁ] - любая русская буква
[?!] - вопрос или восклицательный знак
Есть группы
([a-z][a-z]) - группа состоящая из двух букв. каждая из которых в промежутке между a-z английскими
Группы от шаблонов отличаются тем, что они захватываются твоим поиском. Ты ведь не забыл, что регулярка - это в первую очередь ПОИСК?
Есть модификаторы
/([a-z][a-z])/gi - g(global), i(ignorcase) - глобал означает искать во всем тексте не учитывая переносы строк, если не поставить - будет искать только в пределах одной строки, ignorcase - позволит не указывать большие буквы
/([a-z][a-z])/gu - g(global), u(utf-8) - утф8 позволит корректно работать с русскими буквами в utf-8 кодировке, частая проблема на форумах