ÙÙ
ÙÙ ÙØ¶Ø¹ جزء Ù
٠اÙÙÙ
ÙØ°Ø¬ بÙÙ ÙÙØ³ÙÙ ÙÙ
Ø·: (...). ÙÙØ°Ø§ Ù
ا ÙØ³Ù
Ù âÙ
جÙ
ÙØ¹Ø© أسرâ.
ÙØ°Ø§ ÙÙ ØªØ£Ø«ÙØ±Ø§Ù:
- ÙØ³Ù Ø Ø¨Ø§ÙØØµÙ٠عÙ٠جزء ٠٠اÙ٠باراة ÙØ¨Ùد Ù ÙÙØµÙ Ù٠٠صÙÙÙØ© اÙÙØªØ§Ø¦Ø¬.
- إذا ÙØ¶Ø¹Ùا ÙÙ ÙØ§Ù بعد Ø§ÙØ£ÙÙØ§Ø³ Ø ÙØ¥ÙÙ ÙÙØ·Ø¨Ù عÙÙ Ø§ÙØ£ÙÙØ§Ø³ ÙÙÙ.
Ø§ÙØ£Ù Ø«ÙØ©
دعÙÙØ§ ÙØ±Ù ÙÙÙ ØªØ¹Ù Ù Ø§ÙØ£ÙÙØ§Ø³ ÙÙ Ø§ÙØ£Ù Ø«ÙØ©.
٠ثاÙ: gogogo
بدÙÙ ÙÙØ³ÙÙ Ø ÙØ¥Ù اÙÙÙ
Ø· اÙÙÙ
Ø·: go + ÙØ¹Ù٠اÙÙ
ÙØ¶Ùع: g Ø Ù
ØªØ¨ÙØ¹Ùا Ø¨ÙØ§ÙÙ
ÙØ¶Ùع: o Ù
ÙØ±Ø±Ùا Ù
رة ÙØ§ØØ¯Ø© Ø£Ù Ø£ÙØ«Ø±. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø goooo Ø£Ù gooooooooo.
تجÙ
ع Ø§ÙØ£ÙÙØ§Ø³ Ø§ÙØ£ØØ±Ù Ù
Ø¹ÙØ§ Ø ÙØ°Ø§ اÙÙÙ
Ø·: (go) + ÙØ¹ÙÙ go Ù gogo Ù gogogo ÙÙ
ا Ø¥Ù٠ذÙÙ.
alert( 'Gogogo now!'.match(/(go)+/ig) ); // "Gogogo"
٠ثاÙ: اÙ٠جاÙ
دعÙÙØ§ ÙØ¬Ø¹Ù Ø´ÙØ¦Ùا Ø£ÙØ«Ø± تعÙÙØ¯Ùا â ØªØ¹Ø¨ÙØ±ÙØ§ عادÙÙØ§ ÙÙØ¨ØØ« Ø¹Ù ÙØ·Ø§Ù Ù ÙÙØ¹ ÙÙØ¨.
ÙÙ Ø«ÙØ§:
mail.com
users.mail.com
smith.users.mail.com
Ù٠ا ÙØ±Ù Ø Ø§ÙÙ Ø¬Ø§Ù ÙØªÙÙÙ Ù Ù ÙÙ٠ات Ù ØªÙØ±Ø±Ø© Ø ÙÙØ·Ø© بعد ÙÙ ÙØ§ØØ¯Ø© Ø¨Ø§Ø³ØªØ«ÙØ§Ø¡ Ø§ÙØ£Ø®Ùرة.
ÙÙ Ø§ÙØªØ¹Ø¨Ùرات Ø§ÙØ¹Ø§Ø¯ÙØ© ÙØ°Ø§ ÙÙ
Ø·: (\ w + \.) + \ w +:
let regexp = /(\w+\.)+\w+/g;
alert( "site.com my.site.com".match(regexp) ); // site.com,my.site.com
ÙØ¹Ù
Ù Ø§ÙØ¨ØØ« Ø ÙÙÙÙ ÙØ§ ÙÙ
ÙÙ Ø£Ù ÙØªØ·Ø§Ø¨Ù اÙÙÙ
Ø· Ù
ع اÙÙØ·Ø§Ù Ø¨ÙØ§ØµÙØ© Ø Ø¹Ù٠سبÙ٠اÙÙ
ثا٠my-site.com Ø ÙØ£Ù اÙÙØ§ØµÙØ© ÙØ§ ØªÙØªÙ
٠إÙ٠اÙÙÙ
Ø·class: \ w.
ÙÙ
ÙÙÙØ§ Ø¥ØµÙØ§ØÙ ع٠طرÙ٠استبدا٠\ w ب٠[\ w-]ÙÙ ÙÙ ÙÙÙ
Ø© Ø¨Ø§Ø³ØªØ«ÙØ§Ø¡ اÙÙÙÙ
Ø© Ø§ÙØ£Ø®Ùرة: ([\ w -] + \.) + \ w +.
٠ثاÙ: Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ
ÙÙ ÙÙ ØªÙØ³Ùع اÙÙ Ø«Ø§Ù Ø§ÙØ³Ø§Ø¨Ù. ÙÙ ÙÙÙØ§ Ø¥ÙØ´Ø§Ø¡ ØªØ¹Ø¨ÙØ± عاد٠ÙÙØ±Ø³Ø§Ø¦Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙØ© Ø¨ÙØ§Ø¡Ù عÙÙÙ.
ØªÙØ³ÙÙ Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ ÙÙ: name @ domain. ÙÙ
Ù٠أ٠تÙÙ٠أ٠ÙÙÙ
Ø© Ø§ÙØ§Ø³Ù
ÙØ§ÙÙØ§ØµÙات ÙØ§ÙÙÙØ§Ø· Ù
سÙ
ÙØÙØ§ Ø¨ÙØ§. ÙÙ Ø§ÙØªØ¹Ø¨Ùرات Ø§ÙØ¹Ø§Ø¯ÙØ© ÙØ°Ø§ اÙÙÙ
Ø·: [-. \ w] +.
اÙÙÙ Ø·:
let regexp = /[-.\w]+@([\w-]+\.)+[\w-]+/g;
alert("[email protected] @ [email protected]".match(regexp)); // [email protected], [email protected]
ÙØ°Ø§ Ø§ÙØªØ¹Ø¨Ùر Ø§ÙØ¹Ø§Ø¯Ù ÙÙØ³ ٠ثاÙÙÙØ§ Ø ÙÙÙÙÙ ÙØ¹Ù Ù ÙÙ Ø§ÙØºØ§Ùب ÙÙØ³Ø§Ø¹Ø¯ عÙÙ Ø¥ØµÙØ§Ø Ø§ÙØ£Ø®Ø·Ø§Ø¡ Ø§ÙØ¹Ø±Ø¶ÙØ©. ÙØ§ ÙÙ Ù٠إجراء Ø§ÙØ§Ø®ØªÙار اÙÙØÙØ¯ اÙÙ ÙØ«Ù٠ب٠ØÙÙØ§ ÙÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ Ø¥ÙØ§ ع٠طرÙÙ Ø¥Ø±Ø³Ø§Ù Ø¨Ø±ÙØ¯ Ø¥ÙÙØªØ±ÙÙÙ.
Ø£ÙÙØ§Ø³ اÙÙ ØØªÙÙØ§Øª Ù٠اÙ٠باراة
Ø§ÙØ£ÙÙØ§Ø³ ٠رÙÙ Ø© ٠٠اÙÙØ³Ø§Ø± Ø¥Ù٠اÙÙÙ ÙÙ. ÙØÙØ¸ Ù ØØ±Ù Ø§ÙØ¨ØØ« اÙÙ ØØªÙ٠اÙ٠طاب٠ÙÙÙ Ù ÙÙØ§ ÙÙØ³Ù Ø Ø¨Ø§ÙØØµÙ٠عÙÙÙ Ù٠اÙÙØªÙجة.
Ø§ÙØ·Ø±ÙÙØ© str.match (regexp) Ø Ø¥Ø°Ø§ ÙÙ
ÙÙÙ ÙÙ regexp Ø¹ÙØ§Ù
Ø©g Ø ÙØ§Ø¨ØØ« ع٠اÙÙ
Ø·Ø§Ø¨ÙØ© Ø§ÙØ£ÙÙÙ ÙØªØ±Ø¬Ø¹Ùا ÙÙ
صÙÙÙØ©:
- Ù٠اÙÙÙØ±Ø³
0: اÙ٠باراة اÙÙØ§Ù ÙØ©. - Ù٠اÙÙÙØ±Ø³
1: Ù ØØªÙÙØ§Øª Ø§ÙØ£ÙÙØ§Ø³ Ø§ÙØ£ÙÙÙ. - Ù٠اÙÙÙØ±Ø³
2: Ù ØØªÙÙØ§Øª Ø§ÙØ£ÙÙØ§Ø³ Ø§ÙØ«Ø§ÙÙØ©. - ⦠ÙÙÙØ°Ø§ â¦
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø ÙÙØ¯ Ø§ÙØ¹Ø«Ùر عÙÙ Ø¹ÙØ§Ù
ات HTML <. *Ø> Ø ÙÙ
Ø¹Ø§ÙØ¬ØªÙا. سÙÙÙÙ Ù
٠اÙÙ
ÙØ§Ø³Ø¨ ÙØ¬Ùد Ù
ØØªÙÙ Ø¹ÙØ§Ù
Ø© (Ù
ا ÙÙØ¬Ø¯ Ø¯Ø§Ø®Ù Ø§ÙØ²ÙØ§ÙØ§) Ø ÙÙ Ù
ØªØºÙØ± Ù
ÙÙØµÙ.
دعÙÙØ§ ÙÙ٠اÙÙ
ØØªÙÙ Ø§ÙØ¯Ø§Ø®Ù٠بÙÙ ÙÙØ³ÙÙ Ø Ù
Ø«Ù ÙØ°Ø§: <(. *Ø)>.
Ø§ÙØ¢Ù Ø³ÙØØµÙ Ø¹ÙÙ ÙÙ Ù
Ù Ø§ÙØ¹ÙاÙ
Ø© عÙ٠أÙÙØ§ Ù
Ø·Ø§Ø¨ÙØ© ÙØ§Ù
ÙØ©: <h1> ÙÙ
ØØªÙÙØ§ØªÙا Ù
Ø·Ø§Ø¨ÙØ©: h1 ÙÙ Ø§ÙØµÙÙ٠اÙÙØ§ØªØ¬:
let str = '<h1>Hello, world!</h1>';
let tag = str.match(/<(.*?)>/);
alert( tag[0] ); // <h1>
alert( tag[1] ); // h1
اÙÙ Ø¬Ù ÙØ¹Ø§Øª اÙÙ ØªØ¯Ø§Ø®ÙØ©
ÙÙ ÙÙ Ø£Ù ØªØªØ¯Ø§Ø®Ù Ø§ÙØ£ÙÙØ§Ø³. ÙÙ ÙØ°Ù Ø§ÙØØ§ÙØ© Ø ÙÙØªÙÙ Ø§ÙØªØ±ÙÙÙ Ø£ÙØ¶Ùا ٠٠اÙÙØ³Ø§Ø± Ø¥Ù٠اÙÙÙ ÙÙ.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¹ÙØ¯ Ø§ÙØ¨ØØ« Ø¹Ù Ø¹ÙØ§Ù
Ø© Ù٠اÙÙ
ÙØ¶Ùع: <span class =" my "> ÙØ¯ ÙÙÙÙ Ù
ÙØªÙ
Ù٠بÙ
ا ÙÙÙ:
- Ù
ØØªÙÙ Ø§ÙØ¹ÙاÙ
Ø© ÙÙÙ:
span class =" my ". - اسÙ
Ø§ÙØ¹ÙاÙ
Ø©:
span. - سÙ
ات Ø§ÙØ¹ÙاÙ
Ø©:
class =" my ".
دعÙÙØ§ ÙØ¶Ù٠أÙÙØ§Ø³Ùا ÙÙÙ
: <(([a-z] +) \ s * ([^>] *))>.
Ø¥ÙÙÙ ÙÙÙÙØ© ترÙÙÙ ÙØ§ (٠٠اÙÙØ³Ø§Ø± Ø¥Ù٠اÙÙÙ ÙÙ Ø Ø¹Ù Ø·Ø±ÙÙ ÙÙØ³ Ø§ÙØ§ÙتتاØ):
In action:
let str = '<span class="my">';
let regexp = /<(([a-z]+)\s*([^>]*))>/;
let result = str.match(regexp);
alert(result[0]); // <span class="my">
alert(result[1]); // span class="my"
alert(result[2]); // span
alert(result[3]); // class="my"
Ø¯Ø§Ø¦Ù ÙØ§ ٠ا ÙØÙ Ù Ø§ÙÙÙØ±Ø³ Ø§ÙØµÙØ±Ù âØ§ÙÙØªÙØ¬Ø©â Ø§ÙÙ Ø·Ø§Ø¨ÙØ© اÙÙØ§Ù ÙØ©.
Ø«Ù
اÙÙ
جÙ
ÙØ¹Ø§Øª Ø Ù
رÙÙ
Ø© Ù
٠اÙÙØ³Ø§Ø± Ø¥Ù٠اÙÙÙ
ÙÙ Ø¨ÙØ§Ø³Ø·Ø© ÙÙØ³ Ø§ÙØªØªØ§Ø. تÙ
إرجاع اÙÙ
جÙ
ÙØ¹Ø© Ø§ÙØ£ÙÙ٠عÙ٠أÙÙØ§ ÙØªÙجة [1]. ÙÙØ§ ÙØ±ÙÙ Ù
ØØªÙÙ Ø§ÙØ¹ÙاÙ
Ø© باÙÙØ§Ù
Ù.
Ø«Ù
Ù٠اÙÙØªÙجة [2] ØªÙØªÙ٠اÙÙ
جÙ
ÙØ¹Ø© Ù
Ù ÙÙ
Ø· `` اÙÙØªØ Ø§ÙØ«Ø§ÙÙ ââ: ([az] +) - اسÙ
Ø§ÙØ¹ÙاÙ
Ø© Ø Ø«Ù
Ù٠اÙÙØªÙجة [3] Ø§ÙØ¹ÙاÙ
Ø©: اÙÙÙ
Ø·: ([^>] * ) `.
Ù ØØªÙÙØ§Øª ÙÙ Ù Ø¬Ù ÙØ¹Ø© ÙÙ Ø§ÙØ³ÙØ³ÙØ©:
اÙÙ Ø¬Ù ÙØ¹Ø§Øª Ø§ÙØ§Ø®ØªÙØ§Ø±ÙØ©
ØØªÙ إذا ÙØ§Ùت اÙÙ
جÙ
ÙØ¹Ø© Ø§Ø®ØªÙØ§Ø±ÙØ© ÙÙØ§ ÙØ¬Ùد ÙÙØ§ Ù٠اÙÙ
Ø·Ø§Ø¨ÙØ© (عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø ØªØØªÙ٠عÙ٠اÙÙÙ
ÙØ°Ø¬ اÙÙ
ÙØØ¯ÙÙØ¯ اÙÙÙ
Ù: (...)Ø) Ø ÙØ¥Ù Ø¹ÙØµØ± صÙÙ٠اÙÙØªÙجة اÙÙ
طاب٠Ù
ÙØ¬Ùد ÙÙØ³Ø§ÙÙØºÙر Ù
عرÙÙ.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙÙÙØ± ÙÙ regexp a (z)Ø (c)Ø. ØªØ¨ØØ« ع٠ââ âÙ
ØªØ¨ÙØ¹Ùا Ø§Ø®ØªÙØ§Ø±ÙÙØ§ بÙâ âzâ âÙ
ØªØ¨ÙØ¹Ùا Ø§Ø®ØªÙØ§Ø±ÙÙØ§ بÙâ âcâ ".
إذا ÙÙ
ÙØ§ بتشغÙÙ٠عÙÙ Ø§ÙØ³ÙØ³ÙØ© Ø¨ØØ±Ù ÙØ§ØØ¯ a Ø ÙØ¥Ù اÙÙØªÙجة ÙÙ:
let match = 'a'.match(/a(z)?(c)?/);
alert( match.length ); // 3
alert( match[0] ); // a (whole match)
alert( match[1] ); // undefined
alert( match[2] ); // undefined
Ø§ÙØµÙÙÙ ÙÙ Ø·ÙÙ 3 Ø ÙÙÙ Ù٠اÙÙ
جÙ
ÙØ¹Ø§Øª ÙØ§Ø±ØºØ©.
ÙØ¥ÙÙÙ Ù
Ø·Ø§Ø¨ÙØ© Ø£ÙØ«Ø± تعÙÙØ¯Ùا ÙÙØ³ÙØ³ÙØ© ac:
let match = 'ac'.match(/a(z)?(c)?/)
alert( match.length ); // 3
alert( match[0] ); // ac (whole match)
alert( match[1] ); // undefined, because there's nothing for (z)?
alert( match[2] ); // c
Ø·ÙÙ Ø§ÙØµÙÙ٠دائÙ
: 3. ÙÙÙÙ ÙØ§ ÙÙØ¬Ø¯ Ø´ÙØ¡ ÙÙÙ
جÙ
ÙØ¹Ø© 'pattern: (z)Ø Ø ÙØ°Ø§ ÙØ¥Ù اÙÙØªÙجة ÙÙ" ["ac"Ø undefinedØ "c"].
Ø§ÙØ¨ØØ« Ø¹Ù Ø¬Ù ÙØ¹ Ø§ÙØªØ·Ø§Ø¨Ùات ٠ع اÙÙ Ø¬Ù ÙØ¹Ø§Øª: matchAll
matchAll Ù٠طرÙÙØ© Ø¬Ø¯ÙØ¯Ø© Ø ÙØ¯ تÙÙÙ ÙÙØ§Ù ØØ§Ø¬Ø© Ø¥Ù٠تعبئة Ù
ØªØ¹Ø¯Ø¯Ø©Ø§ÙØ·Ø±ÙÙØ© matchAll ØºÙØ± Ù
دعÙÙ
Ø© Ù٠اÙÙ
ØªØµÙØØ§Øª اÙÙØ¯ÙÙ
Ø©.
ÙØ¯ تÙÙÙ ÙÙØ§Ù ØØ§Ø¬Ø© Ø¥Ù٠تعبئة ٠تعددة Ø Ù Ø«Ù https://github.com/ljharb/String.prototype.matchAll.
Ø¹ÙØ¯Ù
ا ÙØ¨ØØ« ع٠جÙ
ÙØ¹ Ø§ÙØªØ·Ø§Ø¨Ùات (Ø§ÙØ¥Ø¨Ùاغ ع٠g) Ø ÙØ§ ØªÙØ±Ø¬Ø¹ طرÙÙØ©match Ù
ØØªÙÙØ§Øª اÙÙ
جÙ
ÙØ¹Ø§Øª.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙØ¬Ø¯ ÙÙ Ø§ÙØ¹Ùا٠ات ÙÙ Ø³ÙØ³ÙØ©:
let str = '<h1> <h2>';
let tags = str.match(/<(.*?)>/g);
alert( tags ); // <h1>,<h2>
ÙØ§ÙÙØªÙجة ÙÙ Ù Ø¬Ù ÙØ¹Ø© Ù Ù Ø§ÙØªØ·Ø§Ø¨Ùات Ø ÙÙÙ٠بدÙÙ ØªÙØ§ØµÙÙ ØÙÙ ÙÙ Ù ÙÙØ§. ÙÙÙÙ Ù٠اÙ٠٠ارسة Ø§ÙØ¹Ù ÙÙØ© Ø ÙØØªØ§Ø¬ عادة٠إÙÙ Ù ØØªÙÙØ§Øª Ù Ø¬Ù ÙØ¹Ø§Øª Ø§ÙØ§ÙØªÙØ§Ø· Ù٠اÙÙØªÙجة.
ÙÙØØµÙ٠عÙÙÙØ§ Ø ÙØ¬Ø¨ Ø§ÙØ¨ØØ« باستخداÙ
Ø§ÙØ·Ø±ÙÙØ© str.matchAll (regexp).
ت٠ت Ø¥Ø¶Ø§ÙØªÙا Ø¥ÙÙ ÙØºØ© Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت بعد ÙØªØ±Ø© Ø·ÙÙÙØ© Ù Ù âØ§ÙØªØ·Ø§Ø¨Ùâ Ø Ø¨Ø§Ø¹ØªØ¨Ø§Ø±ÙØ§ âÙØ³Ø®ØªÙا Ø§ÙØ¬Ø¯Ùدة ÙØ§ÙÙ ØØ³ÙØ©â.
تÙ
اÙ
ÙØ§ Ù
ث٠match Ø ÙØ¥ÙÙ ÙØ¨ØØ« ع٠اÙÙ
Ø¨Ø§Ø±ÙØ§Øª Ø ÙÙÙÙ ÙÙØ§Ù 3 Ø§Ø®ØªÙØ§Ùات:
- ÙØ§ تÙÙ٠بإرجاع صÙÙÙ Ø ÙÙÙÙ ÙØ§Ø¦Ù ÙØ§Ø¨Ù ÙÙØªÙرار.
- Ø¹ÙØ¯ ÙØ¬Ùد Ø§ÙØ¹Ùا٠ة âpattern: gâ Ø ÙØ¥ÙÙØ§ ØªÙØ±Ø¬Ø¹ ÙÙ Ù Ø·Ø§Ø¨ÙØ© Ù٠صÙÙÙØ© Ø¨Ù Ø¬Ù ÙØ¹Ø§Øª.
- ÙÙ ØØ§ÙØ© Ø¹Ø¯Ù ÙØ¬Ùد ØªØ·Ø§Ø¨ÙØ§Øª Ø ÙØ¥ÙÙØ§ ÙØ§ ØªÙØ±Ø¬Ø¹ âÙÙÙ Ø© خاÙÙØ©â Ø Ø¨Ù ØªÙØ±Ø¬Ø¹ ÙØ§Ø¦ÙÙØ§ ÙØ§Ø±ØºÙا ÙØ§Ø¨ÙÙØ§ ÙÙØªÙرار.
عÙ٠سبÙ٠اÙ٠ثاÙ:
let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi);
// results - is not an array, but an iterable object
alert(results); // [object RegExp String Iterator]
alert(results[0]); // undefined (*)
results = Array.from(results); // let's turn it into array
alert(results[0]); // <h1>,h1 (1st tag)
alert(results[1]); // <h2>,h2 (2nd tag)
ÙÙ
ا ÙØ±Ù Ø ÙØ¥Ù اÙÙØ±Ù Ø§ÙØ£ÙÙ Ù
ÙÙ
ÙÙØºØ§ÙØ© Ø ÙÙ
ا ÙÙ Ù
ÙØ¶Ø ÙÙ Ø§ÙØ³Ø·Ø± (*). ÙØ§ ÙÙ
ÙÙÙØ§ Ø§ÙØØµÙ٠عÙ٠اÙÙ
Ø·Ø§Ø¨ÙØ© ÙÙ "اÙÙØªØ§Ø¦Ø¬ [0]Ø ÙØ£Ù ÙØ°Ø§ اÙÙØ§Ø¦Ù ÙÙØ³ ÙØ§Ø°Ø¨Ùا. ÙÙ
ÙÙÙØ§ تØÙÙÙÙØ§ Ø¥ÙÙArrayØÙÙÙ٠باستخداÙ
Array.from`. ÙÙØ§Ù اÙÙ
Ø²ÙØ¯ Ù
Ù Ø§ÙØªÙاصÙÙ ØÙ٠اÙÙ
صÙÙÙØ§Øª اÙÙØ§Ø°Ø¨Ø© ÙØ§ÙÙØ§Ø¨ÙØ© ÙÙØªÙرار Ù٠اÙÙ
ÙØ§ÙØ© <info: iterable>.
ÙÙØ³Øª ÙÙØ§Ù ØØ§Ø¬Ø© ÙÙ Array.from إذا ÙÙØ§ ÙØ±Ø§Ø¬Ø¹ اÙÙØªØ§Ø¦Ø¬:
let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi);
for(let result of results) {
alert(result);
// first alert: <h1>,h1
// second: <h2>,h2
}
⦠أ٠باستخداÙ
اÙÙ destructuring:
let [tag1, tag2] = '<h1> <h2>'.matchAll(/<(.*?)>/gi);
ÙÙ Ù
Ø·Ø§Ø¨ÙØ© Ø ÙØªÙ
Ø¥Ø±Ø¬Ø§Ø¹ÙØ§ Ø¨ÙØ§Ø³Ø·Ø© matchAll Ø ÙÙØ§ ÙÙØ³ Ø§ÙØªÙسÙÙ Ø§ÙØ°Ù تÙ
Ø¥Ø±Ø¬Ø§Ø¹Ù Ø¨ÙØ§Ø³Ø·Ø©Ù
Ø·Ø§Ø¨ÙØ© بدÙÙ ÙÙ
Ø· Ø§ÙØ¹ÙاÙ
Ø©: g: Ø¥ÙÙØ§ Ù
صÙÙÙØ© ذات خصائص إضاÙÙØ©ÙÙØ±Ø³ (ÙÙØ±Ø³ اÙÙ
Ø·Ø§Ø¨ÙØ© ÙÙ Ø§ÙØ³ÙØ³ÙØ©) Ù Ø§ÙØ¥Ø¯Ø®Ø§Ù (Ø³ÙØ³ÙØ© اÙÙ
صدر ):
let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi);
let [tag1, tag2] = results;
alert( tag1[0] ); // <h1>
alert( tag1[1] ); // h1
alert( tag1.index ); // 0
alert( tag1.input ); // <h1> <h2>
Ù٠اذا ت٠تص٠ÙÙ Ø§ÙØ·Ø±ÙÙØ© Ø¨ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ©Ø ÙØ§Ùسبب Ø¨Ø³ÙØ· â ÙÙØªØØ³ÙÙ.
استدعاء âmatchAllâ ÙØ§ ÙØ¬Ø±Ù Ø§ÙØ¨ØØ«. Ø¨Ø¯ÙØ§Ù ٠٠ذÙÙ Ø ØªÙÙ٠بإرجاع ÙØ§Ø¦Ù ÙØ§Ø¨Ù ÙÙØªÙرار Ø Ø¨Ø¯Ù٠اÙÙØªØ§Ø¦Ø¬ ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ©. ÙØªÙ إجراء Ø§ÙØ¨ØØ« ÙÙ Ù٠٠رة ÙÙØ±Ø± ÙÙÙØ§ ذÙÙ Ø Ø¹Ù٠سبÙ٠اÙ٠ثا٠ÙÙ Ø§ÙØÙÙØ©.
ÙØ°ÙÙ Ø Ø³ÙØªÙ Ø§ÙØ¹Ø«Ùر عÙÙ Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙØªØ§Ø¦Ø¬ ØØ³Ø¨ Ø§ÙØØ§Ø¬Ø© Ø ÙÙÙØ³ Ø£ÙØ«Ø±.
عÙ٠سبÙ٠اÙÙ
ثا٠Ù
٠اÙÙ
ØØªÙ
٠أ٠ÙÙÙÙ ÙÙØ§Ù 100 تطاب٠Ù٠اÙÙØµ Ø ÙÙÙÙ ÙÙ ØÙÙØ© for..of ÙØ¬Ø¯Ùا 5 Ù
ÙÙØ§ Ø Ø«Ù
ÙØ±Ø±Ùا Ø£ÙÙØ§ ÙØ§ÙÙØ© ÙÙÙ
ÙØ§ بعÙ
Ù" break ".Ø«Ù
ÙÙ ÙÙØ¶Ù اÙÙ
ØØ±Ù ÙÙØªÙا ÙÙ Ø§ÙØ¹Ø«Ùر عÙÙ 95 تشاب٠آخر.
اÙÙ Ø¬Ù ÙØ¹Ø§Øª اÙ٠س٠اة
Ù Ù Ø§ÙØµØ¹Ø¨ ØªØ°ÙØ± اÙÙ Ø¬Ù ÙØ¹Ø§Øª Ø¨Ø£Ø±ÙØ§Ù ÙØ§. باÙÙØ³Ø¨Ø© ÙÙØ£Ù٠اط Ø§ÙØ¨Ø³Ùطة Ø ÙÙ Ù٠اÙÙÙØ§Ù بذÙÙ Ø ÙÙÙ٠باÙÙØ³Ø¨Ø© ÙÙØ£Ù٠اط Ø§ÙØ£Ùثر تعÙÙØ¯Ùا Ø ÙØ¹Ø¯ ØØ³Ø§Ø¨ Ø§ÙØ£ÙÙØ§Ø³ ØºÙØ± Ù Ø±ÙØ. ÙØ¯ÙÙØ§ Ø®ÙØ§Ø± Ø£ÙØ¶Ù Ø¨ÙØ«Ùر: إعطاء أس٠اء ÙÙØ£ÙÙØ§Ø³.
ÙØªÙ
ذÙ٠ع٠طرÙÙ ÙØ¶Ø¹ "pattern :Ø
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙØ¨ØØ« Ø¹Ù ØªØ§Ø±ÙØ® Ø¨ØªÙØ³ÙÙ âØ¹Ø§Ù -Ø´ÙØ±-ÙÙÙ â:
let dateRegexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/;
let str = "2019-04-30";
let groups = str.match(dateRegexp).groups;
alert(groups.year); // 2019
alert(groups.month); // 04
alert(groups.day); // 30
Ù٠ا ØªØ±Ù Ø Ø§ÙÙ Ø¬Ù ÙØ¹Ø§Øª Ù ÙØ¬Ùدة ÙÙ Ø®Ø§ØµÙØ© â.groupsâ ÙÙ٠باراة.
ÙÙØ¨ØØ« ع٠جÙ
ÙØ¹ Ø§ÙØªÙØ§Ø±ÙØ® Ø ÙÙ
ÙÙÙØ§ Ø¥Ø¶Ø§ÙØ© Ø§ÙØ¹ÙÙ
g.
Ø³ÙØØªØ§Ø¬ Ø£ÙØ¶Ùا Ø¥ÙÙ âmatchAllâ ÙÙØØµÙ٠عÙÙ ØªØ·Ø§Ø¨ÙØ§Øª ÙØ§Ù ÙØ© Ø Ø¬ÙØ¨Ùا Ø¥ÙÙ Ø¬ÙØ¨ ٠ع اÙÙ Ø¬Ù ÙØ¹Ø§Øª:
let dateRegexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g;
let str = "2019-10-30 2020-01-01";
let results = str.matchAll(dateRegexp);
for(let result of results) {
let {year, month, day} = result.groups;
alert(`${day}.${month}.${year}`);
// first alert: 30.10.2019
// second: 01.01.2020
}
Ø§ÙØ§Ø³ØªÙÙØ§Ø¡ عÙ٠اÙÙ Ø¬Ù ÙØ¹Ø§Øª ÙÙ Ø§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù
تسÙ
Ø Ø§ÙØ·Ø±ÙÙØ© str.replace (regexp Ø Ø§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù) Ø§ÙØªÙ تستبد٠جÙ
ÙØ¹ Ø§ÙØªØ·Ø§Ø¨Ùات ب٠regexp ÙÙstr باستخداÙ
Ù
ØØªÙÙØ§Øª Ø§ÙØ£ÙÙØ§Ø³ ÙÙ Ø³ÙØ³ÙØ© replace. ÙØªÙ
ذÙ٠باستخداÙ
$ n Ø ØÙØ« n Ù٠رÙÙ
اÙÙ
جÙ
ÙØ¹Ø©.
ÙÙ Ø«ÙØ§Ø
let str = "John Bull";
let regexp = /(\w+) (\w+)/;
alert( str.replace(regexp, '$2, $1') ); // Bull, John
باÙÙØ³Ø¨Ø© ÙÙØ£ÙÙØ§Ø³ اÙÙ
سÙ
اة Ø Ø³ÙÙÙ٠اÙÙ
رجع $ <name>.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙØ¹Ùد ØªÙØ³ÙÙ Ø§ÙØªÙØ§Ø±ÙØ® Ù Ù âyear-month-dayâ Ø¥ÙÙ âday.month.yearâ:
let regexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g;
let str = "2019-10-30, 2020-01-01";
alert( str.replace(regexp, '$<day>.$<month>.$<year>') );
// 30.10.2019, 01.01.2020
اÙÙ Ø¬Ù ÙØ¹Ø§Øª ØºÙØ± اÙÙ ÙØªÙطة ٠عØ:
Ù٠بعض Ø§ÙØ£ØÙØ§Ù ÙØØªØ§Ø¬ Ø¥ÙÙ ÙÙØ³ÙÙ ÙØªØ·Ø¨ÙÙ Ù ÙØØ¯ÙÙØ¯ اÙÙÙ ÙØ© بشÙ٠صØÙØ Ø ÙÙÙÙØ§ ÙØ§ ÙØ±Ùد Ù ØØªÙÙØ§ØªÙا Ù٠اÙÙØªØ§Ø¦Ø¬.
ÙÙ Ù٠استبعاد Ù Ø¬Ù ÙØ¹Ø© Ø¨Ø¥Ø¶Ø§ÙØ© âpattern:Ø:â ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ©.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¥Ø°Ø§ Ø£Ø±Ø¯ÙØ§ Ø§ÙØ¹Ø«Ùر عÙÙ "pattern: (go) +Ø ÙÙÙÙØ§ ÙØ§ ÙØ±Ùد Ù
ØØªÙÙØ§Øª Ø§ÙØ£ÙÙØ§Ø³ (go) ÙØ¹Ùصر صÙÙÙ Ù
ÙÙØµÙ Ø ÙÙÙ
ÙÙÙØ§ ÙØªØ§Ø¨Ø©: pattern :( Ø: go) + ` .
Ù٠اÙÙ
Ø«Ø§Ù Ø£Ø¯ÙØ§Ù Ø ÙØØµÙ ÙÙØ· عÙÙ Ø§ÙØ§Ø³Ù
John ÙØ¹Ø¶Ù Ù
ÙÙØµÙ Ù٠اÙÙ
باراة:
let str = "Gogogo John!";
// ?: exludes 'go' from capturing
let regexp = /(?:go)+ (\w+)/i;
let result = str.match(regexp);
alert( result[0] ); // Gogogo John (full match)
alert( result[1] ); // John
alert( result.length ); // 2 (no more items in the array)
اÙÙ ÙØ®Øµ
تج٠ع Ø§ÙØ£ÙÙØ§Ø³ Ù Ø¹ÙØ§ Ø¬Ø²Ø¡ÙØ§ Ù Ù Ø§ÙØªØ¹Ø¨Ùر Ø§ÙØ¹Ø§Ø¯Ù Ø Ø¨ØÙØ« ÙÙØ·Ø¨Ù اÙÙ ÙÙØ§Ø³ عÙÙÙ ÙÙÙ.
ÙØªÙ
ترÙÙÙ
Ù
جÙ
ÙØ¹Ø§Øª Ø§ÙØ£ÙÙØ§Ø³ Ù
٠اÙÙØ³Ø§Ø± Ø¥Ù٠اÙÙÙ
ÙÙ Ø ÙÙÙ
ÙÙ Ø§Ø®ØªÙØ§Ø±ÙÙØ§ تسÙ
ÙØªÙا ب٠(Ø <name> ...).
ÙÙ ÙÙ Ø§ÙØØµÙ٠عÙ٠اÙÙ ØØªÙ٠اÙ٠طاب٠ÙÙ Ø¬Ù ÙØ¹Ø© ٠ا Ù٠اÙÙØªØ§Ø¦Ø¬:
- ØªÙØ¸Ùر Ø§ÙØ·Ø±ÙÙØ©
str.matchÙ Ø¬Ù ÙØ¹Ø§Øª Ø§ÙØ§ÙØªÙØ§Ø· ÙÙØ· بدÙÙ ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙÙ" اÙÙÙ ÙØ°Ø¬: g`. - Ø§ÙØ·Ø±ÙÙØ©
str.matchAllØªÙØ±Ø¬Ø¹ Ø¯Ø§Ø¦Ù ÙØ§ Ù Ø¬Ù ÙØ¹Ø§Øª Ø§ÙØ§ÙØªÙØ§Ø·.
إذا ÙÙ ÙÙÙ ÙÙØ£ÙÙØ§Ø³ Ø§Ø³Ù Ø ÙØ¥Ù Ù ØØªÙÙØ§ØªÙا Ù ØªØ§ØØ© Ù٠٠صÙÙÙØ© اÙÙ Ø·Ø§Ø¨ÙØ© برÙÙ ÙØ§. Ø§ÙØ£ÙÙØ§Ø³ اÙÙ Ø³Ù ÙØ¹Ø© Ù ØªØ§ØØ© Ø£ÙØ¶Ùا ÙÙ Ø®Ø§ØµÙØ© âØ§ÙÙ Ø¬Ù ÙØ¹Ø§Øªâ.
ÙÙ
ÙÙÙØ§ Ø£ÙØ¶Ùا استخداÙ
Ù
ØØªÙÙØ§Øª Ø§ÙØ£ÙÙØ§Ø³ ÙÙ Ø³ÙØ³ÙØ© Ø§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù ÙÙ str.replace: Ø¨Ø§ÙØ±ÙÙ
$ n Ø£Ù Ø¨Ø§ÙØ§Ø³Ù
$ <name>.
ÙÙ Ù٠استبعاد Ù Ø¬Ù ÙØ¹Ø© Ù Ù Ø§ÙØªØ±ÙÙ٠ع٠طرÙÙ Ø¥Ø¶Ø§ÙØ© âpattern:Ø:â ÙÙ Ø¨Ø¯Ø§ÙØªÙا. ÙÙØ³ØªØ®Ø¯Ù ÙØ°Ø§ Ø¹ÙØ¯Ù ا ÙØØªØ§Ø¬ Ø¥Ù٠تطبÙÙ Ù ÙØØ¯ÙÙØ¯ اÙÙÙ ÙØ© عÙ٠اÙÙ Ø¬Ù ÙØ¹Ø© بأÙÙ ÙÙØ§ Ø ÙÙÙÙ ÙØ§ ÙØ±ÙØ¯ÙØ§ ÙØ¨Ùد Ù ÙÙØµÙ Ù٠صÙÙ٠اÙÙØªØ§Ø¦Ø¬. ÙØ§ ÙÙ ÙÙÙØ§ Ø£ÙØ¶Ùا Ø§ÙØ¥Ø´Ø§Ø±Ø© Ø¥ÙÙ ÙØ°Ù Ø§ÙØ£ÙÙØ§Ø³ ÙÙ Ø³ÙØ³ÙØ© Ø§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)