Aytaylik, bizda +7(903)-123-45-67 kabi satr bor va unda barcha raqamlarni topishni xohlaymiz. Lekin avvalgidan farqli oâlaroq, biz alohida raqamlar emas, balki toâliq raqamlar bilan qiziqamiz: 7, 903, 123, 45, 67.
Raqam â bu 1 yoki undan koâp raqamlar ketma-ketligi \d. Qanchasi kerakligini belgilash uchun miqdorchi qoâshishimiz mumkin.
Miqdor {n}
Eng oddiy miqdorchi â jingalak qavs ichidagi raqam: {n}.
Miqdorchi belgi (yoki belgilar sinfi, yoki [...] toâplam va hokazo)ga qoâshiladi va qancha kerakligini belgilaydi.
Uning bir nechta ilgâor shakllari bor, misollarni koâraylik:
- Aniq son:
{5} -
\d{5}aynan 5 ta raqamni bildiradi,\d\d\d\d\dbilan bir xil.Quyidagi misol 5 xonali raqamni qidiradi:
alert( "I'm 12345 years old".match(/\d{5}/) ); // "12345"Uzunroq raqamlarni chiqarib tashlash uchun
\bqoâshishimiz mumkin:\b\d{5}\b. - Diapazon:
{3,5}, 3-5 marta mos keladi -
3 dan 5 gacha raqamlarni topish uchun chegaralarni jingalak qavslarga qoâyishimiz mumkin:
\d{3,5}alert( "I'm not 12, but 1234 years old".match(/\d{3,5}/) ); // "1234"Yuqori chegarani tashlab qoâyishimiz mumkin.
Keyin
\d{3,}regexp uzunligi3yoki undan koâp raqamlar ketma-ketligini qidiradi:alert( "I'm not 12, but 345678 years old".match(/\d{3,}/) ); // "345678"
+7(903)-123-45-67 satriga qaytaylik.
Raqam â bu bir yoki undan koâp raqamlarning ketma-ketligi. Demak, regexp \d{1,}:
let str = "+7(903)-123-45-67";
let numbers = str.match(/\d{1,}/g);
alert(numbers); // 7,903,123,45,67
Qisqartmalar
Koâp ishlatiladigan miqdorchilar uchun qisqartmalar mavjud:
+-
âBir yoki koâpâ degani,
{1,}bilan bir xil.Masalan,
\d+raqamlarni qidiradi:let str = "+7(903)-123-45-67"; alert( str.match(/\d+/g) ); // 7,903,123,45,67 ?-
âNol yoki birâ degani,
{0,1}bilan bir xil. Boshqacha qilib aytganda, belgini ixtiyoriy qiladi.Masalan,
ou?rnaqshiodan keyin nol yoki bittau, keyinrni qidiradi.Shunday qilib,
colou?rhamcolorhamcolourni topadi:let str = "Should I write color or colour?"; alert( str.match(/colou?r/g) ); // color, colour *-
âNol yoki koâpâ degani,
{0,}bilan bir xil. Yaâni belgi istalgan marta takrorlanishi yoki umuman boâlmasligi mumkin.Masalan,
\d0*raqamdan keyin istalgan miqdordagi nollarni qidiradi (koâp yoki hech boâlmasligi mumkin):alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1Uni
+(bir yoki koâp) bilan solishtiring:alert( "100 10 1".match(/\d0+/g) ); // 100, 10 // 1 mos kelmadi, chunki 0+ kamida bitta nol talab qiladi
Koâproq misollar
Miqdorchilar juda tez-tez ishlatiladi. Ular murakkab doimiy ifodalarning asosiy âqurilish blokiâ vazifasini bajaradi, shuning uchun koâproq misollarni koâraylik.
Oânli kasrlar uchun regexp (suzuvchi nuqtali raqam): \d+\.\d+
Amalda:
alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345
Atributsiz âHTML tegi ochishâ uchun regexp, masalan <span> yoki <p>.
-
Eng oddiyi:
/<[a-z]+>/ialert( "<body> ... </body>".match(/<[a-z]+>/gi) ); // <body>Regexp
'<'belgisini, keyin bir yoki koâp lotin harflarini, keyin'>'ni qidiradi. -
Yaxshilangan:
/<[a-z][a-z0-9]*>/iStandartga koâra, HTML teg nomi birinchisidan tashqari istalgan pozitsiyada raqamga ega boâlishi mumkin, masalan
<h1>.alert( "<h1>Hi!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // <h1>
âAtributsiz HTML tegi ochish yoki yopishâ uchun regexp: /<\/?[a-z][a-z0-9]*>/i
Biz naqsh boshiga ixtiyoriy qiyshiq chiziq /? qoâshdik. Uni teskari chiziq bilan ekranlashga toâgâri keldi, aks holda JavaScript uni naqsh oxiri deb oâylaydi.
alert( "<h1>Hi!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1>
Bu misollarda umumiy qoidani koârishimiz mumkin: doimiy ifoda qanchalik aniq boâlsa â shunchalik uzun va murakkab.
Masalan, HTML teglar uchun biz oddiyroq regexpdan foydalanishimiz mumkin: <\w+>. Lekin HTML teg nomi uchun qattiqroq cheklovlarga ega boâlgani uchun, <[a-z][a-z0-9]*> ishonchlirogâ.
<\w+> ishlatamizmi yoki <[a-z][a-z0-9]*> kerakmi?
Haqiqiy hayotda ikkala variant ham qabul qilinadi. Bu âqoâshimchaâ mosliklarga qanchalik toqat qilishimiz va ularni boshqa usullar bilan natijadan olib tashlash qiyin yoki yoqligiga bogâliq.

Izohlar
<code>yorlig'ini ishlating, bir nechta satrlar uchun - ularni<pre>yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepenâ¦)