Самоучитель №1 от JL

Серия [Истории самообучения JL]
[Net Ninja] JS Regular Expressions(current) [Net Ninja] Vue JS2 (Part1, Part2, Part3) [Net Ninja] Vuex [Net Ninja] Python3 (Part1, Part2, Part3) [Net Ninja] Django (Part1, Part2, Part3) [Net Ninja] Sass (Part1, Part2) [Sean Larkin] Webpack4 (Part1, Part2, Part3, Part4)
🌲 Это мое резюме Учебника JavaScript RegEx от Net Ninja на YouTube.
1) Диапазоны
[ ]: набор символов
[ — ]: диапазон
[a-c]inja SUCCESS : 'ainja', 'binja', 'cinja'
В регулярном выражении может быть 2 диапазона. Просто поставьте диапазоны рядом друг с другом. (например, [a-z0–9] inja: в качестве первой буквы можно использовать строчные буквы или число)
2) Повторяющиеся символы
[ ]{}: указывает количество повторов в {}
[0-9]{11}
SUCCESS : a number needs to be repeated 11 times
[ ]{x,y}: дает диапазон (от x до y) количества повторов в пределах {}
[0,9]{10,12}
SUCCESS : a number needs to be repeated 10 or 11 or 12 times
[ ]{x,}: дает диапазон (x или более) числа повторений в пределах {}
[0,9]{5,}
SUCCESS : a number needs to be repeated 5 or more times
3) Мета-символы
\d: соответствует любому цифровому символу (так же, как [0–9])
\w: соответствует любому символу слова (a – z, A – Z, 0–9 и _).
\s: соответствует символу пробела (пробелы, табуляции и т. Д.)
\t: соответствует только символу табуляции)
\d{3}\s\w{5}
SUCCESS : '123 hello', '339 a[ ]{}Z', etc
Ознакомьтесь с полным списком метасимволов здесь.
4) Специальные символы
[^]: символ отрицания в наборе символов (соответствует всему, кроме символа (ов) после ‘^’)
+: один или несколько кванторов
*: квантификатор из 0 или более (соответствует предыдущему элементу ноль или более раз)
\: escape-символ
?: квантификатор нуля или единицы (делает предыдущий символ необязательным)
.: любой символ (кроме символа новой строки)
he?llo? SUCCESS : 'hello', 'hell', 'hllo', 'hll' car. SUCCESS : 'car@', 'car]', etc a\*[a-z]+ SUCCESS : 'a*bbbbbbbb', etc
5) Начальные и конечные паттерны
^[ ]: требование должно быть в начале
[ ]$: требование должно быть в конце
^[a-z]{5}$
SUCCESS : needs to be exactly 5 letters & one match only
6) Альтернативные персонажи
( | ) : or
p|tire SUCCESS : 'p', 'tire' (p|t)ire SUCCESS : 'pire', 'tire' (ab|cd)ef SUCCESS : 'abef', 'cdef'
7) Специальные символы
Вы можете протестировать свой код RegEx на RegEx101.
Флаги RegEx, доступные для тестирования на RegEx101, следующие:
[g] global : don't return after first match [m] multi line : ^ and $ match start/end of line [i] insensitive : case insensitive match [y] sticky : proceed matching from where previous match ended only [u] unicode : match with full unicode [s] single line : dot matches newline [x] extended : ignore whitespace [X] extra : disallow meaningless escapes [U] ungreedy : make quantifiers lazy [A] anchored : anchor to start of pattern [j] jchanged : allow duplicate subpattern names [D] dollar end only : $ matches only end of pattern
Два способа написать RegEx:
var reg = /[a-z]/ig; var reg2 = new RegExp(/[a-z]/,'ig');
8–1) Упражнение с RegEx (Часть 1)
- Телефон должен быть действующим номером телефона в Великобритании (11 цифр):
/^\d{11}$/ - Имя пользователя должно быть буквенно-цифровым и содержать 5–11 символов (без учета регистра):
/^[a-z\d]{5,11}$/i - Пароль должен быть буквенно-цифровым (@, _, - также разрешено) и состоять из 8–20 символов:
/^[\w@-]{8,20}$/ - Слаг должен содержать только строчные буквы, цифры и дефисы и состоять из 8–20 символов:
/^[a-z\d-]{8,20}$/
8–2) Упражнение с RegEx (Часть 2: электронная почта)
(1. имя) @ (2. домен). (3. расширение) (4. снова)
например, [email protected]
- любые буквы, цифры, точки и / или дефисы (без ограничения длины):
[a-z\d\.-]+ - любые буквы, цифры и / или дефисы (без ограничения длины):
[a-z\d]+ - любые буквы (длина: 2 ~ 8):
[a-z]{2,8} - точка (.), затем любые буквы (необязательно, длина: 2 ~ 8):
\.[a-z]{2,8}?
- Полный код:
/^ [a-z\d\.-]+ @ [a-z\d]+ \. [a-z]{2,8} \.[a-z]{2,8}? $/
Посетите эту скрипку, чтобы увидеть полный код этого упражнения RegEx с кодом CSS.
Спасибо за прочтение! 💕 Если вам понравился этот пост в блоге, пожалуйста, хлопайте в ладоши👏