Набори от символи в регулярни изрази на JavaScript

Групите символи \d и \w не са много гъвкави. Дори такава проста задача, като да се намерят всички букви, но не и цифри - не може да бъде решена с тях. За такива задачи трябва да се използват квадратни скоби, които представляват операция 'или'.

Квадратните скоби заместват един символ, който и да е от изброените вътре. Например, ето така: /x[abc]x/ - казваме, че отстрани трябва да стоят букви x, а вътре - един символ: или 'a', или 'b', или 'c'.

След квадратните скоби могат да се пишат оператори за повторение. Например, ето така: /x[abc]+x/ - казваме, че между x-овете може да има произволен брой символи 'a', 'b' и 'c' - във всякакви комбинации.

Може не само да се изброяват символи, но и да се създават групи от символи, като се запише тире между два символа. Например, ето така: [a-d] - получаваме всички символи от 'a' до 'd'.

Нека да разгледаме примери.

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка буква от 'a' до 'z':

javascriptlet str = 'xax xbx xcx x@x';
let res = str.replace(/x[a-z]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка буква от 'a' до 'k':

javascriptlet str = 'xax xbx xmx x@x';
let res = str.replace(/x[a-k]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! xmx x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка буква от 'A' до 'Z':

javascriptlet str = 'xax xBx xcx x@x';
let res = str.replace(/x[A-Z]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'xax ! xcx x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка цифра от 0 до 9:

javascriptlet str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[0-9]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'xax ! ! ! x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка цифра от 3 до 7:

javascriptlet str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[3-7]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'xax x1x ! ! x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка буква от 'a' до 'z' или цифра от 1 до 9:

javascriptlet str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[a-z1-9]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! ! x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка буква от 'a' до 'z' или буква от 'A' до 'Z':

javascriptlet str = 'xax xBx xcx x5x x@x';
let res = str.replace(/x[a-zA-Z]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! x5x x@x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове всяка буква от 'a' до 'z' или цифри 1, 2:

javascriptlet str = 'xax xbx x1x x2x x3x';
let res = str.replace(/x[a-z12]x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! ! x3x'

Пример

В този пример шаблонът за търсене изглежда така: между x-ове букви от 'a' до 'z' в количество от 1 и повече:

javascriptlet str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]+x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'xx ! ! ! x123x xa3x'

Пример

Нека направим така, че броят на буквите да може да бъде и нула:

javascriptlet str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]*x/g, '!');

В резултат в променливата ще бъде записано следното:

javascript'! ! ! ! x123x xa3x'

Практически задачи

Задание 1

Даден е низ:

javascriptlet str = 'aba aea aca aza axa';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - буква 'b', 'e' или 'x'.

Задание 2

Даден е низ:

javascriptlet str = 'a1a a3a a7a a9a aba';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - цифра от 3-ти до 6-ти.

Задание 3

Даден е низ:

javascriptlet str = 'aba aea afa aha aga';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - буква от a до g.

Задание 4

Даден е низ:

javascriptlet str = 'aba aea afa aha aga';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - буква от a до f и от j до z.

Задание 5

Даден е низ:

javascriptlet str = 'aAa aea aEa aJa a3a';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - буква от a до f и от A до D.

Задание 6

Даден е низ:

javascriptlet str = 'aAXa aeffa aGha aza ax23a a3sSa';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - малки латински букви, без да засяга останалите.

Задание 7

Даден е низ:

javascriptlet str = 'aAXa aeffa aGha aza ax23a a3sSa';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - малки и големи латински букви, без да засяга останалите.

Задание 8

Даден е низ:

javascriptlet str = 'aAXa aeffa aGha aza ax23a a3sSa';

Напишете регулярен израз, който ще намери по следния шаблон: отстрани стоят букви 'a', а между тях - малки латински букви и цифри, без да засяга останалите.