JavaScript регуляр ифодалардаги белгилар гуруҳлари
Бирданига бутун белгилар гуруҳларини танлаш имконини берувчи махсус буйруқлар мавжуд. \d буйруғи 0 дан 9 гача рақамни англатади.
\w буйруғи рақам, лотин ҳарфи ёки таги чизиқ белгисини англатади. \s буйруғи
бушлиқ ёки бушлиқ белгисини англатади:
бушлиқ, сатр ўтиш, табуляция. Буйруқнинг қийматини инвертлаш мумкин, катта ҳарф билан ёзиш орқали:
масалан, агар \d - рақам бўлса,
\D - рақам эмас.
Мисол
Барча рақамларни топамиз:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'! !! !!!'
Мисол
Такрорлаш операторлари буйруқ-гуруҳларни
бир бутунлик ҳисоблайди, яъни гуруҳлаштириш қавслари
зарурат эмас. Куйидаги мисолда қидируш намунаси
куйидагича кўринишда: 0 дан 9 гача рақам
бир ёки бир неча марта:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! abc @@@'
Мисол
Куйидаги мисолда қидируш намунаси куйидагича
кўринишда: ҳар қандай нарса бир ёки бир неча марта,
лекин 0 дан 9 гача рақам эмас:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'123!3!'
Мисол
Бу мисолда қидируш намунаси куйидагича кўринишда: бушлиқ белгиси бир марта:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'1!12!123!abc!@@@'
Мисол
Бу мисолда қидируш намунаси куйидагича кўринишда:
бушлиқ белгиси ЭМАС бир ёки бир неча марта.
Бушлиқлар билан ажратилган барча қисматўғрилар
'!' га айлантирилади:
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! ! !'
Мисол
Бу мисолда қидируш намунаси куйидагича кўринишда:
рақам ёки ҳарф бир ёки бир неча марта.
Рақамлар ва ҳарфлардан таркиб топган барча қисматўғрилар
'!' га айлантирилади:
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! ! @@@'
Мисол
Бу мисолда қидируш намунаси куйидагича кўринишда:
рақам ЭМАС ва ҳарф ЭМАС бир ёки бир неча марта.
Бу аниқлашга кўра бизнинг ҳолимизда
'@@@' ва барча бушлиқлар (улар ҳам
рақамлар ва ҳарфлар эмас) тушadi. Эътиборингизни
қаратингки, охирида битта '!' - унга
' @@@' - олдида бушлиқ билан сатр
айлантирилди:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Натижада ўзгарувчига куйидагилар ёзилади:
'1!12!123!Abc!'
Амалий машқлар
Берылган сатр:
let str = 'a1a a2a a3a a4a a5a aba aca';
Регуляр ифода ёзинг, у қайси сатрларни топади,
четаларида 'a' ҳарфлари турадиган,
ва уларнинг ўртасида битта рақам.
Берылган сатр:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Регуляр ифода ёзинг, у қайси сатрларни топади,
четаларида 'a' ҳарфлари турадиган,
ва уларнинг ўртасида ҳар қандай миқдорда рақам.
Берылган сатр:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Регуляр ифода ёзинг, у қайси сатрларни топади,
четаларида 'a' ҳарфлари турадиган,
ва уларнинг ўртасида ҳар қандай миқдорда рақам (жумладан
нол рақам, яъни 'aa' сатри).
Берылган сатр:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Регуляр ифода ёзинг, у куйидаги кўринишдаги сатрларни топади:
четаларида 'a' ва 'b' ҳарфлари турадиган,
ва уларнинг ўртасида - рақам эмас ва бушлиқ эмас.
Берылган сатр:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Регуляр ифода ёзинг, у куйидаги кўринишдаги сатрларни топади:
четаларида 'a' ва 'b' ҳарфлари турадиган,
ва уларнинг ўртасида - ҳарф эмас, рақам эмас ва бушлиқ эмас.
Берылган сатр:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Регуляр ифода ёзинг, у барча бушлиқларни
'!' га айлантиради.