Злучок унутры набораў у рэгулярках JavaScript
Злучок - таксама спецсімвал унутры [ ]
(а вось звонку - не). Калі вам патрэбны сам
злучок як сімвал - то пастаўце яго там,
дзе ён не будзе ўспрыняты як падзяляльнік
групы.
Чаму гэта важна: вы можаце зрабіць групу
сімвалаў, самі не заўважыўшы гэтага. Напрыклад,
вось так - '[:-@]' - вы думаеце, што
выбіраеце двукроп'е, злучок і сабаку, а на
самай справе атрымліваецца група сімвалаў паміж
: і @. У гэтую групу ўваходзяць
наступныя сімвалы: ? < = > : ;
Адкуль яны ўзяліся? З табліцы ASCII - двукроп'е мае нумар меншы, чым сабака - і атрымліваецца група. Гэта значыць усе групы атрымліваюцца па табліцы ASCII (пры жаданні гэтым можна карыстацца).
Як з гэтым змагацца: пастаўце сімвал злучку
там, дзе ён дакладна не будзе ўспрыняты як
сімвал групы, напрыклад, у пачатку або ў канцы
(гэта значыць пасля [або перад ]).
Можна таксама заэкранаваць злучок - тады
ён будзе абазначаць сам сябе незалежна ад
пазіцыі. Напрыклад, замест [:-@] напісаць
[:\-@] - і групы ўжо не будзе, а
будуць тры сімвалы - двукроп'е, злучок і сабака
@.
Прыклад
У наступным прыкладзе шаблон пошуку такі:
лічба 1, потым літара ад 'a'
да 'z', потым лічба 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
У выніку ў зменную запішацца наступнае:
'! 1-2 ! !'
Прыклад
Давайце цяпер заэкрануем злучок. У выніку
шаблон пошуку такі: лічба 1, потым
літара 'a', або злучок, або літара 'z',
потым лічба 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! 1c2 !'
Прыклад
Можна проста пераставіць злучок, не экранаваўшы яго:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! 1c2 !'
Прыклад
У наступным прыкладзе шаблон пошуку такі:
першы сімвал - гэта маленькія літары або
злучок '-', потым дзве літары 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
У выніку ў зменную запішацца наступнае:
'! Axx ! @xx'
Прыклад
У наступным прыкладзе шаблон пошуку такі:
першы сімвал - гэта маленькія, вялікія
літары або злучок '-', потым дзве літары
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! @xx'
Прыклад
Можна размясціць злучок паміж двума групамі - там ён дакладна яшчэ не зробіць яшчэ адну групу:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! @xx'
Практычныя задачы
Дадзены радок:
let str = 'xaz xBz xcz x-z x@z';
Знайдзіце ўсе радкі па наступным шаблоне:
літара 'x', вялікая або маленькая
літара або злучок, літара 'z'.
Дадзены радок:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Знайдзіце ўсе радкі па наступным шаблоне:
літара 'x', потым або долар, або
злучок або плюс, потым літара 'z'.