Самоучитель №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]

  1. любые буквы, цифры, точки и / или дефисы (без ограничения длины): [a-z\d\.-]+
  2. любые буквы, цифры и / или дефисы (без ограничения длины): [a-z\d]+
  3. любые буквы (длина: 2 ~ 8): [a-z]{2,8}
  4. точка (.), затем любые буквы (необязательно, длина: 2 ~ 8): \.[a-z]{2,8}?
  • Полный код: /^ [a-z\d\.-]+ @ [a-z\d]+ \. [a-z]{2,8} \.[a-z]{2,8}? $/

Посетите эту скрипку, чтобы увидеть полный код этого упражнения RegEx с кодом CSS.

Спасибо за прочтение! 💕 Если вам понравился этот пост в блоге, пожалуйста, хлопайте в ладоши👏