⊗jsSpREEP 129 of 294 menu

Կարմանները ռեգուլյար արտահայտության մեջ JavaScript-ում

Կարմանների պարունակությունը հասանելի է ոչ միայն փոխարինման տողում, այլև հենց ռեգուլյար արտահայտության մեջ. մենք կարող ենք ինչ-որ բան դնել կարմանում, ապա անմիջապես ռեգուլյարում ասել, որ այստեղ պետք է լինի այդ կարմանի պարունակությունը:

Կարմանների պարունակությունը հասանելի է նրանց համարների միջոցով, որոնցից առաջ դրված է հակադարձ շեղ: Օրինակ, առաջին կարմանը կլինի հասանելի այսպես. \1, երկրորդ կարմանը այսպես - \2, երրորդը - \3 և այսպես շարունակ:

Համոզված եմ, որ վերևում գրված ամենը առայժմ շատ անորոշ է ձեզ համար: Սա զարմանալի չէ, քանի որ կարմանները ռեգուլյար արտահայտությունների ամենաքիչ հասկանալի մասն են: Եկեք օրինակներով պարզաբանենք:

Օրինակ

Ենթադրենք ունենք այսպիսի տող:

let str = 'aa bb cd ef';

Եկեք գտնենք դրանում բոլոր այն տեղերը, որտեղ կան երկու նույնական տառներ իրար հաջորդող: Խնդիրը լուծելու համար կփնտրենք ցանկացած տառ, կդնենք այն կարմանում, ապա կստուգենք, արդյոք հաջորդ նիշը այդ կարմանի պարունակությունն է:

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

Արդյունքում փոփոխականի մեջ կգրվի հետևյալը:

'! ! cd ef'

Օրինակ

Ենթադրենք ունենք այսպիսի տող:

let str = 'asxca buzxb csgd';

Եկեք գտնենք դրանում բոլոր այն բառերը, որոնցում նույնն են առաջին և վերջին տառերը: Խնդիրը լուծելու համար կգրենք հետևյալ ձևանմուշը. տառ, ապա ևս մեկ կամ ավելի տառ, ապա նույն տառը, ինչ առաջինը:

let res = str.replace(/([a-z])[a-z]+\1/g, '!');

Արդյունքում փոփոխականի մեջ կգրվի հետևյալը:

'! ! csgd'

Գործնական առաջադրանքներ

Տրված է տող.

let str = 'aaa bbb ccc xyz';

Գտեք բոլոր այն ենթատողերը, որոնցում կան երեք նույնական տառ իրար հաջորդող:

Տրված է տող.

let str = 'a aa aaa aaaa aaaaa';

Գտեք բոլոր այն ենթատողերը, որոնցում կան երկու և ավել նույնական տառներ իրար հաջորդող:

Տրված է տող.

let str = 'aaa aaa bbb bbb ccc ddd';

Գտեք բոլոր այն ենթատողերը, որոնցում կան երկու նույնական բառ իրար հաջորդող:

csuzlbyrohy