Злучок унутры набораў у рэгулярках JavaScript

Злучок - таксама спецсімвал унутры [ ] (а вось звонку - не). Калі вам патрэбны сам злучок як сімвал - то пастаўце яго там, дзе ён не будзе ўспрыняты як падзяляльнік групы.

Чаму гэта важна: вы можаце зрабіць групу сімвалаў, самі не заўважыўшы гэтага. Напрыклад, вось так - '[:-@]' - вы думаеце, што выбіраеце двукроп'е, злучок і сабаку, а на самай справе атрымліваецца група сімвалаў паміж : і @. У гэтую групу ўваходзяць наступныя сімвалы: ? < = > : ;

Адкуль яны ўзяліся? З табліцы ASCII - двукроп'е мае нумар меншы, чым сабака - і атрымліваецца група. Гэта значыць усе групы атрымліваюцца па табліцы ASCII (пры жаданні гэтым можна карыстацца).

Як з гэтым змагацца: пастаўце сімвал злучку там, дзе ён дакладна не будзе ўспрыняты як сімвал групы, напрыклад, у пачатку або ў канцы (гэта значыць пасля [або перад ]).

Можна таксама заэкранаваць злучок - тады ён будзе абазначаць сам сябе незалежна ад пазіцыі. Напрыклад, замест [:-@] напісаць [:\-@] - і групы ўжо не будзе, а будуць тры сімвалы - двукроп'е, злучок і сабака @.

Прыклад

У наступным прыкладзе шаблон пошуку такі: лічба 1, потым літара ад 'a' да 'z', потым лічба 2:

javascriptlet str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');

У выніку ў зменную запішацца наступнае:

javascript'! 1-2 ! !'

Прыклад

Давайце цяпер заэкрануем злучок. У выніку шаблон пошуку такі: лічба 1, потым літара 'a', або злучок, або літара 'z', потым лічба 2:

javascriptlet str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');

У выніку ў зменную запішацца наступнае:

javascript'! ! 1c2 !'

Прыклад

Можна проста пераставіць злучок, не экранаваўшы яго:

javascriptlet str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');

У выніку ў зменную запішацца наступнае:

javascript'! ! 1c2 !'

Прыклад

У наступным прыкладзе шаблон пошуку такі: першы сімвал - гэта маленькія літары або злучок '-', потым дзве літары 'x':

javascriptlet str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');

У выніку ў зменную запішацца наступнае:

javascript'! Axx ! @xx'

Прыклад

У наступным прыкладзе шаблон пошуку такі: першы сімвал - гэта маленькія, вялікія літары або злучок '-', потым дзве літары 'x':

javascriptlet str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');

У выніку ў зменную запішацца наступнае:

javascript'! ! ! @xx'

Прыклад

Можна размясціць злучок паміж двума групамі - там ён дакладна яшчэ не зробіць яшчэ адну групу:

javascriptlet str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');

У выніку ў зменную запішацца наступнае:

javascript'! ! ! @xx'

Практычныя задачы

Задание 1

Дадзены радок:

javascriptlet str = 'xaz xBz xcz x-z x@z';

Знайдзіце ўсе радкі па наступным шаблоне: літара 'x', вялікая або маленькая літара або злучок, літара 'z'.

Задание 2

Дадзены радок:

javascriptlet str = 'xaz x$z x-z xcz x+z x%z x*z';

Знайдзіце ўсе радкі па наступным шаблоне: літара 'x', потым або долар, або злучок або плюс, потым літара 'z'.