Регулярний вираз - це інструкція, що описує спеціально розробленою мовою (RegExp) закон “подібності” рядка зі зразком.
Приклад: регулярний вираз - /[0-9a-z]+/i :
-
0-9 – будь-яка цифра.
-
az - будь-яка мала літера від a до z.
-
[] - квадратні дужки означають, що у шаблоні може бути будь-який з перелічених у яких літералів (у разі цифри і малі літери)
-
+ - вказує, що дана частина шаблону (тобто те, що у квадратних дужках) може повторюватися один і більше разів.
-
i - прапор, що означає, що регістр символів немає значення.
Іншими словами, наш регулярний вираз вказує, що пароль може містити будь-яку кількість цифр і літер 1 і більше разів (тобто він може складатися з однієї цифри, з однієї літери, багатьох цифр, багатьох букв, цифр і букв) .
Почнемо з найпростішого - літералів:
-
Кожен із таких символів представляє сам себе. Наприклад, /abc/ - такому шаблону можна порівняти лише рядок “abc”.
-
az - всі малі літери від a до z. Наприклад, /az/ - такому шаблону зіставляються 26 рядків: “a”, “b”, “c”… “z”
-
AZ - всі великі літери від A до Z.
-
0-9 – усі цифри.
Якщо ми хочемо вказати, що цифр чи літер може бути кілька, то доведеться використовувати керуючі символи:
-
*** - вказує, що символ (або частина шаблону, якщо вона укладена у квадратні дужки) може повторюватися 0 і більше разів. Наприклад, /ab*c/ - означає, що рядок починається з символу a, потім може бути скільки завгодно символів b, після яких слідує символ c. Тобто. це можуть бути, наприклад, такі рядки: “ac”, “abc”, “abbbbbbc” тощо.
-
+ - вказує на те, що символ (або частина шаблону, якщо вона укладена в квадратні дужки) може повторюватися 1 і більше разів. Наприклад, /ab+c/ - означає, що рядок починається з символу a, потім може бути скільки завгодно символів b (але не менше 1), після яких слідує символ c. Тобто. це можуть бути, наприклад, такі рядки: “abc”, “abbbbbbc” тощо.
-
. - вказує, що тут може бути будь-який одиночний символ, крім символу нового рядка. Наприклад, для шаблону /ab.c/ можна порівняти такі рядки: “ab6c”, “abxc”, “ab=c” тощо.
-
? - вказує на те, що символ (або частина шаблону, якщо вона укладена у квадратні дужки) може повторюватися 0 або 1 раз. Наприклад, /ab?c/ - означає, що рядок починається із символу a, потім може бути або не бути один символ b, після якого слідує символ c. Тобто. це можуть бути такі рядки: “ac”, “abc”
-
{n} - вказує, що символ (або частина шаблону, якщо вона укладена у квадратні дужки) може повторюватися рівно n разів. Наприклад, /ab{3}c/ - означає, що рядок починається з символу a, потім йдуть 3 символи b, після яких слідує символ c. Тобто. це буде рядок “abbbc”.
-
{n,} - вказує, що символ (або частина шаблону, якщо вона поміщена у квадратні дужки) може повторюватися n і більше разів. Наприклад, /ab{3,}c/ - означає, що рядок починається з символу a, потім йдуть 3 або більше символів b, після яких слідує символ c. Тобто. це може бути такі рядки: “abbbc”, “abbbbbbbc” тощо.
-
{n, m} - вказує на те, що символ (або частина шаблону, якщо вона укладена в квадратні дужки) може повторюватися від n до m разів. Наприклад, /ab{1,3}c/ - означає, що рядок починається з символу a, потім йдуть від 1 до 3 символів b, після яких слідує символ c. Тобто. це можуть бути такі рядки: “abc”, “abbc”, “abbbc”.
-
[] - такий шаблон можна порівняти з будь-яким одиночним символом, що належить множині, визначеній у дужках. Багато задається перерахуванням або вказівкою діапазону. Наприклад, шаблону /[abc]/ можуть бути зіставні рядки: “a”, “b”, “c”.
-
[^] - такий шаблон можна порівняти з будь-яким одиночним символом, що не належить множині, визначеній у дужках. Наприклад, шаблону /[^abc]/ можуть бути порівнянні рядки: “f”, “x”, “Z”, але не можуть бути порівняні рядки: “a”, “b”, “c”.
-
^ - вказує, що символи можна порівняти з початком рядка. Наприклад, шаблону /^abc/ можуть бути порівнянні рядки: “abcd”, “abcfh”, але не можуть бути порівняні рядки: “dabc”, “cbabc” і т.д.
-
$ - вказує, що символи можна порівняти з кінцем рядка. Наприклад, шаблону /abc$/ можуть бути зіставні рядки: “dabc”, “fhabc”, але не можуть бути зіставні рядки: “abcd”, “abccb” і т.д.
-
| - Вказує на кілька альтернативних шаблонів. Наприклад, шаблону /ab|c/ будуть співставні рядки: “ab” і “c”.
-
- служить для екранування спеціальних символів, тобто . зворотний слеш перед символом свідчить про те, що він повинен інтерпретуватися як спеціальний. Наприклад:
-
d - відповідає будь-яка цифра від 0 до 9.
-
\D - відповідає все, крім цифри.
-
\s - відповідає пробіл.
-
\S - відповідає все, крім пропуску.
-
\w - відповідає буква, цифра або знак підкреслення.
-
\W - відповідає все, крім літери, цифри або символу підкреслення.
Наприклад, шаблону /x\d\d/ відповідатимуть рядки: “x01”, “x25” і т.д., але не відповідатимуть рядки: “A15”, “x0A”…
Також зворотний слеш використовується, щоб спеціальний символ зробити літеральним. Наприклад, якщо нам потрібно знайти рядок “a*b”, ми задамо наступний шаблон /a*b/.