Регулярні вирази

Регулярний вираз - це інструкція, що описує спеціально розробленою мовою (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/.

3 Likes

За допомоги плагину
Phone Number Input + Formatting
від Zeroqode
я отримую CountryName:

United States
United Arab Emirates (‫الإمارات العربية المتحدة‬‎)
Dominican Republic (República Dominicana)
United Kingdom

Мені треба отримати за допомогою регулярного виразу усе до “(” без останнього пробілу.

Dominican Republic (República Dominicana) → Dominican Republic


Знайшов 2 способи вирішення

  1. за допомогою :split by()
    головне “мова має значення!” як що використати “(” українську він її не знайде.


2. за допомогою регулярного виразу - [\s\w]+ який залишає пробіл, тому треба ще додати :trimmed який видаляє цей пробіл наприкінці.

Ще. Результат дії цих функцій є список тому треба вказати який елемент нам треба, навіть якщо він один у списку. тому :first item

Вирішив викласти цікавий вираз:

{{[A-Za-z0-9,[]/\s]SORT[A-Za-z0-9,[]/\s]}}

Він у тексті (шаблоні):
Lorem ipsum dolor sit amet, {{LONG,SORT,JUMP}} consectetur adipiscing elit, sed SORT do eiusmod tempor incididunt ut labore {{SORT}} et dolore magna aliqua {{[h1] SORT [/h1]}}.

Змінює
{{LONG,SORT,JUMP}}
{{SORT}}
{{[h1] SORT [/h1]}}
На
DISTRICT

Результат:
Lorem ipsum dolor sit amet, DISTRICT consectetur adipiscing elit, sed SORT do eiusmod tempor incididunt ut labore DISTRICT et dolore magna aliqua DISTRICT.

При цьому просто SORT не змінює.