ÐÑипÑÑÑимо, Ñ Ð½Ð°Ñ Ñ ÑÑдок +38(067)-123-45-67 Ñ Ð½Ð°Ð¼ поÑÑÑбно знайÑи вÑÑ ÑиÑла в нÑомÑ. Ðле ÑÑого ÑазÑ, на вÑдмÑÐ½Ñ Ð²Ñд попеÑеднÑÑ
, Ð½Ð°Ñ ÑÑкавлÑÑÑ Ð½Ðµ Ð¿Ð¾Ð¾Ð´Ð¸Ð½Ð¾ÐºÑ ÑиÑÑи, а Ñаме ÑиÑла : 38, 067, 123, 45, 67.
ЧиÑло Ñе поÑлÑдовнÑÑÑÑ Ð· 1, або бÑлÑÑе ÑиÑÑ \d Ñ Ñоб познаÑиÑи поÑÑÑÐ±Ð½Ñ Ð½Ð°Ð¼ кÑлÑкÑÑÑÑ, ми можемо заÑÑоÑÑваÑи кванÑиÑÑкаÑоÑ.
ÐÑлÑкÑÑÑÑ {n}
ÐайпÑоÑÑÑÑим кванÑиÑÑкаÑоÑом Ñ ÑиÑло Ñ ÑÑгÑÑниÑ
дÑжкаÑ
: {n}.
ÐванÑиÑÑкаÑÐ¾Ñ Ð´Ð¾Ð´Ð°ÑÑÑÑÑ Ð´Ð¾ ÑимволÑ(або клаÑÑ ÑимволÑв, набоÑÑ [...], ÑоÑо) Ñ Ð¿Ð¾Ð·Ð½Ð°ÑÐ°Ñ Ñка ÑÑ
кÑлÑкÑÑÑÑ Ð½Ð°Ð¼ поÑÑÑбна.
ÐÑнÑÑ Ð´ÐµÐºÑлÑка ÑпоÑобÑв викоÑиÑÑÐ°Ð½Ð½Ñ ÐºÐ²Ð°Ð½ÑиÑÑкаÑоÑа, ÑозглÑнемо на пÑÐ¸ÐºÐ»Ð°Ð´Ð°Ñ :
- ТоÑна кÑлÑкÑÑÑÑ:
{5} -
\d{5}ознаÑÐ°Ñ ÑоÑно 5 ÑиÑÑ, Ñак Ñамо Ñк Ñ\d\d\d\d\d.ÐижÑенаведений пÑиклад ÑÑкаÑиме ÑиÑло, Ñке ÑкладаÑÑÑÑÑ Ð· 5-Ñи ÑиÑÑ:
alert( "ÐÐµÐ½Ñ 12345 ÑокÑв".match(/\d{5}/) ); // "12345"Ðи могли б додаÑи
\bÑ Ñаким Ñином вилÑÑиÑи з поÑÑÐºÑ ÑиÑла довÑÑ Ð·Ð° Ð½Ð°Ñ Ñаблон:\b\d{5}\b. - ÐÑапазон:
{3,5}, вÑд 3 до 5 -
Щоб знайÑи ÑиÑла, ÑÐºÑ ÑкладаÑÑÑÑÑ Ð· мÑнÑмÑм 3 Ñ Ð¼Ð°ÐºÑимÑм 5 ÑиÑел, ми можемо вказаÑи поÑÑÑÐ±Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ ÑÑгÑÑÐ½Ð¸Ñ Ð´ÑÐ¶ÐºÐ°Ñ :
\d{3,5}alert( "ÐÐµÐ½Ñ Ð½Ðµ 12 ÑокÑв, а 1234".match(/\d{3,5}/) ); // "1234"Ðи можемо не вказÑваÑи веÑÑ Ð½Ñ Ð¼ÐµÐ¶Ñ.
Ð ÑÐ°ÐºÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, ÑегÑлÑÑний виÑаз
\d{3,}ÑÑкаÑиме поÑлÑдовнÑÑÑÑ ÑиÑÑ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾Ñ Ð²Ñд3Ñ/або бÑлÑÑе:alert( "ÐÐµÐ½Ñ Ð½Ðµ 12, а 345678 ÑокÑв".match(/\d{3,}/) ); // "345678"
ÐавайÑе повеÑнемоÑÑ Ð´Ð¾ ÑÑдка +38(067)-123-45-67.
ЧиÑло Ñе поÑлÑдовнÑÑÑÑ Ð· однÑÑÑ Ð°Ð±Ð¾ бÑлÑÑе ÑиÑÑ Ð¿ÑдÑÑд. Таким Ñином, ÑегÑлÑÑний виÑаз виглÑдаÑиме \d{1,}:
let str = "+38(067)-123-45-67";
let numbers = str.match(/\d{1,}/g);
alert(numbers); // 38,067,123,45,67
СкоÑоÑеннÑ
ÐÑнÑÑÑÑ ÑпоÑоби ÑкоÑоÑено запиÑаÑи бÑлÑÑÑ ÑаÑÑÐ¸Ð½Ñ ÑаÑÑо Ð²Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ²Ð°Ð½ÑиÑÑкаÑоÑÑв:
+-
ÐзнаÑÐ°Ñ âодин, або бÑлÑÑеâ, Ñак Ñамо Ñк Ñ
{1,}.Ðо пÑикладÑ,
\d+ÑÑÐºÐ°Ñ ÑиÑла, ÑÐºÑ ÑкладаÑÑÑÑÑ Ð· однÑÑÑ, або бÑлÑÑе ÑиÑÑ:let str = "+38(067)-123-45-67"; alert( str.match(/\d+/g) ); // 38,067,123,45,67 ?-
ÐзнаÑÐ°Ñ âнÑлÑ, або одинâ, Ñак Ñамо Ñк Ñ
{0,1}. ÐнакÑе кажÑÑи, в Ñакий ÑпоÑÑб ми Ñобимо Ñимвол необовâÑзковим.Ðо пÑикладÑ, Ñаблон
ou?rÑÑкаÑиме лÑÑеÑÑoпÑÑÐ»Ñ ÑкоÑ, можливо, йÑиме лÑÑеÑаu, Ñ Ð¿Ð¾ÑÑм лÑÑеÑаr.Ð Ñаким Ñином,
colou?rзнайде обидва ÑловаcolorÑаcolour:let str = "ÐнглÑйÑÑÐºÐ¾Ñ Ñлово колÑÑ Ð¿Ð¸ÑеÑÑÑÑ Ñк color Ñи colour?"; alert( str.match(/colou?r/g) ); // color, colour *-
ÐзнаÑÐ°Ñ âнÑлÑ, або бÑлÑÑеâ, Ñак Ñамо, Ñк Ñ
{0,}. Це ознаÑаÑ, Ñо Ñимвол може бÑÑи вÑдÑÑÑнÑм, або повÑоÑÑваÑиÑÑ Ð±ÐµÐ·Ð»ÑÑ ÑазÑв.Ðо пÑикладÑ,
\d0*ÑÑÐºÐ°Ñ ÑиÑÑÑ, пÑÑÐ»Ñ ÑÐºÐ¾Ñ Ð¹Ð´Ðµ бÑдÑ-Ñка кÑлÑкÑÑÑÑ Ð½ÑлÑв (може бÑÑи багаÑо, або жодного):alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1ÐоÑÑвнÑйÑе з
+(один, або бÑлÑÑе):alert( "100 10 1".match(/\d0+/g) ); // 100, 10 // РегÑлÑÑний виÑаз не знайÑов 1, оÑкÑлÑки 0+ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ Ð½Ð°ÑвноÑÑÑ ÑонайменÑе одного нÑлÑ
ÐÑлÑÑе пÑикладÑв
ÐванÑиÑÑкаÑоÑи викоÑиÑÑовÑÑÑÑÑÑ Ð´Ñже ÑаÑÑо. Ðони оÑÐ½Ð¾Ð²Ð½Ñ âбÑдÑвелÑÐ½Ñ Ð±Ð»Ð¾ÐºÐ¸â ÑÐºÐ»Ð°Ð´Ð½Ð¸Ñ ÑегÑлÑÑÐ½Ð¸Ñ Ð²Ð¸ÑазÑв, Ñож ÑозглÑнемо Ñе декÑлÑка пÑикладÑв.
РегÑлÑÑний виÑаз Ð´Ð»Ñ Ð´ÐµÑÑÑковиÑ
дÑобÑв (ÑиÑел з плаваÑÑÐ¾Ñ ÐºÐ¾Ð¼Ð¾Ñ): \d+\.\d+
РдÑÑ:
alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345
РегÑлÑÑний виÑаз Ð´Ð»Ñ âвÑдкÑиваÑÑого HTML-ÑÐµÐ³Ñ Ð±ÐµÐ· аÑÑибÑÑÑвâ, напÑиклад, <span>, або <p>.
-
ÐайпÑоÑÑÑÑий ваÑÑанÑ:
/<[a-z]+>/ialert( "<body> ... </body>".match(/<[a-z]+>/gi) ); // <body>РегÑлÑÑний виÑаз ÑÑÐºÐ°Ñ Ñимвол
'<'пÑÑÐ»Ñ Ñкого йдÑÑÑ Ð¾Ð´Ð½Ð°, або бÑлÑÑе лÑÑÐµÑ Ð»Ð°ÑиниÑеÑ, а поÑÑм'>'. -
ÐокÑаÑений ваÑÑанÑ:
/<[a-z][a-z0-9]*>/iÐгÑдно ÑÑандаÑÑÑ, назва HTML-ÑÐµÐ³Ñ Ð¼Ð¾Ð¶Ðµ мÑÑÑиÑи в ÑÐ¾Ð±Ñ Ñ ÑиÑÑÑ Ð½Ð° бÑдÑ-ÑкÑй позиÑÑÑ Ð¾ÐºÑÑм пеÑÑоÑ, Ñк напÑиклад
<h1>.alert( "<h1>Hi!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // <h1>
РегÑлÑÑний виÑаз âвÑдкÑиваÑÑого, або закÑиваÑÑого HTML-ÑÐµÐ³Ñ Ð±ÐµÐ· аÑÑибÑÑÑвâ: /<\/?[a-z][a-z0-9]*>/i
Ðи додали необовâÑзковий ÑÐ»ÐµÑ /? на поÑаÑÐºÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ñ Ð´Ð»Ñ Ñого, Ñоб JavaScript не ÑпÑийнÑв його Ñк кÑнеÑÑ ÑегÑлÑÑного виÑазÑ, нам довелоÑÑ Ð¹Ð¾Ð³Ð¾ екÑанÑваÑи.
alert( "<h1>Hi!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1>
Ðа пÑÐ¸ÐºÐ»Ð°Ð´Ð°Ñ Ð¼Ð¸ побаÑили, Ñо бÑлÑÑ ÑоÑним Ñ ÑегÑлÑÑний виÑаз, Ñим довÑим Ñ ÑкладнÑÑим Ñ Ð¹Ð¾Ð³Ð¾ ÑеалÑзаÑÑÑ.
Ðо пÑикладÑ, Ð´Ð»Ñ HTML-ÑегÑв без аÑÑибÑÑÑв ми могли б викоÑиÑÑаÑи пÑоÑÑÑÑий ÑегÑлÑÑний виÑаз: <\w+>. Ðле Ñак Ñк HTML Ð¼Ð°Ñ Ð±ÑлÑÑ Ð¶Ð¾ÑÑÑÐºÑ Ð²Ð¸Ð¼Ð¾Ð³Ð¸ до назв ÑегÑв, Ñо Ñаблон <[a-z][a-z0-9]*> бÑде бÑлÑÑ ÑоÑним.
Чи можемо ми викоÑиÑÑовÑваÑи <\w+> Ñи кÑаÑе пиÑаÑи <[a-z][a-z0-9]*>?
Ð ÑеалÑÐ½Ð¾Ð¼Ñ Ð¶Ð¸ÑÑÑ Ð¾Ð±Ð¸Ð´Ð²Ð° ваÑÑанÑи маÑÑÑ Ð¿Ñаво на ÑÑнÑваннÑ. ÐÑе залежиÑÑ Ð²Ñд Ñого, Ñи гоÑÐ¾Ð²Ñ Ð¼Ð¸ допÑÑÑиÑи âзайвÑâ ÑпÑвпадÑÐ½Ð½Ñ Ð· наÑим ÑегÑлÑÑний виÑазом Ñ Ð½Ð°ÑкÑллÑки важко, або легко бÑде вÑдÑÑлÑÑÑÑваÑи ÑÑ Ñ Ð¾ÑÑимаÑи пеÑелÑк поÑÑÑÐ±Ð½Ð¸Ñ Ð½Ð°Ð¼ ÑпÑвпадÑнÑ.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)