ÐавайÑе возÑмÑм ÑÑÑÐ¾ÐºÑ Ð²Ð¸Ð´Ð° +7(903)-123-45-67 и найдÑм вÑе ÑиÑла в ней. Ðо ÑепеÑÑ Ð½Ð°Ñ Ð¸Ð½ÑеÑеÑÑÑÑ Ð½Ðµ ÑиÑÑÑ Ð¿Ð¾ оÑделÑноÑÑи, а именно ÑиÑла: 7, 903, 123, 45, 67.
ЧиÑло â ÑÑо поÑледоваÑелÑноÑÑÑ Ð¸Ð· 1 или более ÑиÑÑ \d. ЧÑÐ¾Ð±Ñ ÑказаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво повÑоÑений, нам нÑжно добавиÑÑ ÐºÐ²Ð°Ð½ÑиÑикаÑоÑ.
ÐолиÑеÑÑво {n}
СамÑй пÑоÑÑой кванÑиÑикаÑÐ¾Ñ â ÑÑо ÑиÑло в ÑигÑÑнÑÑ
ÑкобкаÑ
: {n}.
Ðн добавлÑеÑÑÑ Ðº ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (или ÑимволÑÐ½Ð¾Ð¼Ñ ÐºÐ»Ð°ÑÑÑ, или набоÑÑ [...] и Ñ.д.) и ÑказÑваеÑ, ÑколÑко иÑ
нам нÑжно.
Ðожно по-ÑÐ°Ð·Ð½Ð¾Ð¼Ñ ÑказаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво, напÑимеÑ:
- ТоÑное колиÑеÑÑво:
{5} -
Шаблон
\d{5}обознаÑÐ°ÐµÑ Ñовно 5 ÑиÑÑ, он ÑквиваленÑен\d\d\d\d\d.СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸Ñ Ð¿ÑÑизнаÑное ÑиÑло:
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"
ÐавайÑе веÑнÑмÑÑ Ðº ÑÑÑоке +7(903)-123-45-67.
ЧиÑло â ÑÑо поÑледоваÑелÑноÑÑÑ Ð¸Ð· одной или более ÑиÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ñаблон бÑÐ´ÐµÑ \d{1,}:
let str = "+7(903)-123-45-67";
let numbers = str.match(/\d{1,}/g);
alert(numbers); // 7,903,123,45,67
ÐоÑоÑкие обознаÑениÑ
ÐÐ»Ñ ÑамÑÑ Ð²Ð¾ÑÑÑебованнÑÑ ÐºÐ²Ð°Ð½ÑиÑикаÑоÑов еÑÑÑ ÑокÑаÑÑннÑе ÑоÑÐ¼Ñ Ð·Ð°Ð¿Ð¸Ñи:
+-
ÐзнаÑÐ°ÐµÑ Â«Ð¾Ð´Ð¸Ð½ или более». То же Ñамое, ÑÑо и
{1,}.ÐапÑимеÑ,
\d+Ð½Ð°Ñ Ð¾Ð´Ð¸Ñ ÑиÑла (из одной или более ÑиÑÑ):let str = "+7(903)-123-45-67"; alert( str.match(/\d+/g) ); // 7,903,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>ÐÑивеÑ!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // <h1>
РегÑлÑÑное вÑÑажение Ð´Ð»Ñ Â«Ð¾ÑкÑÑваÑÑего или закÑÑваÑÑего HTML-Ñега без аÑÑибÑÑов»: /<\/?[a-z][a-z0-9]*>/i
РнаÑало пÑедÑдÑÑего Ñаблона Ð¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð»Ð¸ необÑзаÑелÑнÑй ÑÐ»ÐµÑ /?. ÐÑÐ¾Ñ Ñимвол понадобилоÑÑ Ð·Ð°ÑкÑаниÑоваÑÑ, ÑÑÐ¾Ð±Ñ JavaScript не пÑинÑл его за ÐºÐ¾Ð½ÐµÑ Ñаблона.
alert( "<h1>ÐÑивеÑ!</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â¦)