#Ø¯ÙØ§Ù اÙRegular Expressions ÙØ§ÙÙÙ٠ات Regular Expressions تعÙÙ Ø³ÙØ³ÙØ© Ù Ù Ø§ÙØ±Ù ÙØ² ÙØ§ÙØ£ØØ±Ù Ø§ÙØªÙ تعبر Ø¹Ù Ø³ÙØ³ÙØ© Ø£Ù ÙÙØ´ ÙÙØªÙ Ø§ÙØ¨ØØ« عÙÙØ§ Ø¶Ù Ù ÙØµ أطÙÙ. ÙÙ ÙØ°Ù اÙÙ ÙØ§ÙØ© Ø³ÙØºØ·Ù Ø§ÙØ·Ø±Ù اÙ٠ختÙÙØ© Ø§ÙØªÙ تع٠٠٠ع regexps بتع٠Ù.
str.match(regexp)
ØªØ¨ØØ« Ø§ÙØ·Ø±ÙÙØ© str.match (regexp) Ø¹Ù ØªØ·Ø§Ø¨ÙØ§Øª ÙÙ regexp ÙÙ Ø§ÙØ³ÙØ³ÙØ©str.
ÙØ¯ÙÙØ§ 3 طرÙ:
-
إذا ÙØ§Ù âregexpâ ÙØ§ ÙØØªÙ٠عÙÙ Ø¹ÙØ§Ù Ø©
ÙÙØ´g: gØ ÙØ¥ÙÙ ÙÙØ±Ø¬Ø¹ اÙÙ Ø·Ø§Ø¨ÙØ© Ø§ÙØ£ÙÙÙ Ù٠صÙÙÙØ© ٠ع Ù Ø¬Ù ÙØ¹Ø§Øª Ø§ÙØªÙاط ÙØ®ØµØ§Ø¦Øµindex(Ù ÙØ¶Ø¹ اÙÙ Ø·Ø§Ø¨ÙØ©) ØØ§ÙإدخاÙ(Ø³ÙØ³ÙØ© Ø§ÙØ¥Ø¯Ø®Ø§Ù Ø ÙØ³Ø§ÙÙstr`):let str = "I love JavaScript"; let result = str.match(/Java(Script)/); alert( result[0] ); // JavaScript (full match) alert( result[1] ); // Script (first capturing group) alert( result.length ); // 2 // Additional information: alert( result.index ); // 7 (match position) alert( result.input ); // I love JavaScript (source string) -
إذا ÙØ§Ù âregexpâ ÙØØªÙ٠عÙÙ ÙÙ Ø· âflag: gâ Ø ÙØ³ÙÙØ±Ø¬Ø¹ ٠صÙÙÙØ© Ù Ù Ø¬Ù ÙØ¹ اÙÙ Ø·Ø§Ø¨ÙØ§Øª عÙÙ Ø´ÙÙ Ø³ÙØ§Ø³Ù Ø Ø¯ÙÙ Ø§ÙØªÙاط Ù Ø¬Ù ÙØ¹Ø§Øª ÙØªÙاصÙ٠أخرÙ.
let str = "I love JavaScript"; let result = str.match(/Java(Script)/g); alert( result[0] ); // JavaScript alert( result.length ); // 1 -
إذا Ù٠تÙÙ ÙÙØ§Ù ØªØ·Ø§Ø¨ÙØ§Øª Ø Ø¨ØºØ¶ اÙÙØ¸Ø± ع٠ا إذا ÙØ§Ù ÙÙØ§Ù Ø¹ÙØ§Ù Ø©
gØ£Ù ÙØ§ Ø ÙØ³Ùت٠إرجاعnull.
ÙØ°Ø§ ÙØ§Ø±Ù Ø¨Ø³ÙØ· Ù
ÙÙ
. إذا ÙÙ
تÙÙ ÙÙØ§Ù ØªØ·Ø§Ø¨ÙØ§Øª Ø ÙÙÙ ÙØØµÙ Ø¹ÙÙ Ù
صÙÙÙØ© ÙØ§Ø±ØºØ© Ø ÙÙÙÙ ÙØ§ØºÙØ©. Ù
Ù Ø§ÙØ³ÙÙ Ø§Ø±ØªÙØ§Ø¨ خطأ ÙØ³Ùا٠ذÙÙ Ø Ø¹Ù٠سبÙ٠اÙÙ
ثاÙ:
```js run
let str = "I love JavaScript";
let result = str.match(/HTML/);
alert(result); // null
alert(result.length); // Error: Cannot read property 'length' of null
```
إذا Ø£Ø±Ø¯ÙØ§ أ٠تÙÙ٠اÙÙØªÙجة ٠صÙÙÙØ© Ø ÙÙÙ ÙÙÙØ§ اÙÙØªØ§Ø¨Ø© عÙ٠اÙÙØÙ Ø§ÙØªØ§ÙÙ:
```js
let result = str.match(regexp) || [];
```
str.matchAll(regexp)
Ø§ÙØ·Ø±ÙÙØ© str.matchAll (regexp) ÙÙ Ù
ØªØºÙØ± âØ£ØØ¯Ø« Ø ÙÙ
ØØ³Ùâ ÙÙ âstr.matchâ.
ÙØªÙ استخدا٠٠بشÙ٠أساس٠ÙÙØ¨ØØ« Ø¹Ù Ø¬Ù ÙØ¹ Ø§ÙØªØ·Ø§Ø¨Ùات ٠ع Ø¬Ù ÙØ¹ اÙÙ Ø¬Ù ÙØ¹Ø§Øª.
ÙÙØ§Ù 3 Ø§Ø®ØªÙØ§Ùات Ø¹Ù âØ§Ù٠باراةâ:
- تÙÙÙ
بإرجاع ÙØ§Ø¦Ù ÙØ§Ø¨Ù ÙÙØªÙرار Ù
ع ØªØ·Ø§Ø¨ÙØ§Øª Ø¨Ø¯ÙØ§Ù Ù
٠صÙÙÙ. ÙÙ
ÙÙÙØ§ عÙ
Ù Ù
صÙÙÙØ© Ù
ÙØªØ¸Ù
Ø© Ù
Ù٠باستخداÙ
Array.from. - ÙØªÙ
إرجاع Ù٠تطاب٠ÙÙ
صÙÙÙØ© Ù
ع Ù
جÙ
ÙØ¹Ø§Øª Ø§ÙØªÙاط (ÙÙØ³ ØªÙØ³ÙÙ
str.matchبدÙÙ Ø¹ÙØ§Ù Ø©g). - إذا Ù٠تÙÙ ÙÙØ§Ù ÙØªØ§Ø¦Ø¬ Ø ÙØ¥ÙÙØ§ ÙØ§ ØªÙØ±Ø¬Ø¹ ânullâ Ø ÙÙÙÙÙØ§ ØªÙØ±Ø¬Ø¹ ÙØ§Ø¦ÙÙØ§ ÙØ§Ø±ØºÙا ÙØ§Ø¨ÙÙØ§ ÙÙØªÙرار.
٠ثا٠ÙÙØ§Ø³ØªØ®Ø¯Ø§Ù :
let str = '<h1>Hello, world!</h1>';
let regexp = /<(.*?)>/g;
let matchAll = str.matchAll(regexp);
alert(matchAll); // [object RegExp String Iterator], not array, but an iterable
matchAll = Array.from(matchAll); // array now
let firstMatch = matchAll[0];
alert( firstMatch[0] ); // <h1>
alert( firstMatch[1] ); // h1
alert( firstMatch.index ); // 0
alert( firstMatch.input ); // <h1>Hello, world!</h1>
إذا استخدÙ
ÙØ§ âforâ¦ofâ ÙÙØªÙرار ÙÙÙ ØªØ·Ø§Ø¨ÙØ§Øª matchAll Ø ÙÙÙ ÙØØªØ§Ø¬ بعد ذÙ٠إÙÙ" Array.from` ".
str.split(regexp|substr, limit)
ØªÙØ³ÙÙ Ø§ÙØ³ÙØ³ÙØ© باستخدا٠regexp (Ø£Ù Ø³ÙØ³ÙØ© ÙØ±Ø¹ÙØ©) ÙÙ ØØ¯Ø¯.
ÙÙ
ÙÙÙØ§ استخداÙ
Ø§ÙØ§ÙÙØ³Ø§Ù
Ù
ع Ø§ÙØ³ÙØ§Ø³Ù Ø Ù
Ø«Ù ÙØ°Ø§:
alert('12-34-56'.split('-')) // array of ['12', '34', '56']
ÙÙÙ ÙÙ ÙÙÙØ§ ØªÙØ³ÙÙ ÙØ§ Ø¨ØªØ¹Ø¨ÙØ± Ø¹Ø§Ø¯Ù Ø Ø¨Ø§ÙØ·Ø±ÙÙØ© ÙÙØ³Ùا:
alert('12, 34, 56'.split(/,\s*/)) // array of ['12', '34', '56']
str.search(regexp)
تعرض Ø§ÙØ·Ø±ÙÙØ© str.search (regexp) Ù
ÙØ¶Ø¹ Ø§ÙØªØ·Ø§Ø¨Ù Ø§ÙØ£Ù٠أ٠-1 إذا ÙÙ
ÙØªÙ
Ø§ÙØ¹Ø«Ùر عÙÙ:
let str = "A drop of ink may make a million think";
alert( str.search( /ink/i ) ); // 10 (first match position)
** اÙÙÙØ¯ اÙÙ ÙÙ : âØ§ÙØ¨ØØ«â ÙØ¹Ø«Ø± عÙ٠اÙÙ Ø·Ø§Ø¨ÙØ© Ø§ÙØ£ÙÙÙ ÙÙØ·. **
إذا Ø§ØØªØ¬Ùا Ø¥ÙÙ Ù
ÙØ§Ø¶Ø¹ ÙÙ
Ø·Ø§Ø¨ÙØ§Øª Ø£Ø®Ø±Ù Ø ÙÙØ¬Ø¨ Ø£Ù ÙØ³ØªØ®Ø¯Ù
ÙØ³Ø§Ø¦Ù Ø£Ø®Ø±Ù Ø Ù
Ø«Ù Ø§ÙØ¹Ø«Ùر عÙÙÙØ§ جÙ
ÙØ¹Ùا باستخداÙ
str.matchAll (regexp).
str.replace(str|regexp, str|func)
ÙØ°Ù طرÙÙØ© عا٠ة ÙÙØ¨ØØ« ÙØ§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù Ø ÙØ§ØØ¯Ø© Ù Ù Ø£ÙØ«Ø±Ùا ÙØ§Ø¦Ø¯Ø©. سÙÙÙ Ø§ÙØ¬ÙØ´ Ø§ÙØ³ÙÙØ³Ø±Ù ÙÙØ¨ØØ« ÙØ§ÙاستبداÙ.
ÙÙ ÙÙÙØ§ استخدا٠٠بدÙÙ regexps ÙÙØ¨ØØ« Ø¹Ù Ø³ÙØ³ÙØ© ÙØ±Ø¹ÙØ© ÙØ§Ø³ØªØ¨Ø¯Ø§ÙÙØ§:
// replace a dash by a colon
alert('12-34-56'.replace("-", ":")) // 12:34-56
ÙÙØ§Ù Ù Ø£Ø²Ù Ø¨Ø§ÙØ±ØºÙ ٠٠ذÙÙ.
** Ø¹ÙØ¯Ù
ا تÙÙ٠اÙÙØ³Ùطة Ø§ÙØ£ÙÙÙ ÙÙ replace عبارة Ø¹Ù Ø³ÙØ³ÙØ© Ø ÙØ¥ÙÙØ§ تØÙ Ù
ØÙ اÙÙ
Ø·Ø§Ø¨ÙØ© Ø§ÙØ£ÙÙÙ ÙÙØ·. **
ÙÙ ÙÙ٠أ٠تر٠ذÙÙ Ù٠اÙÙ Ø«Ø§Ù Ø£Ø¹ÙØ§Ù: ÙÙØ· Ø£ÙÙ ââ â ââ ÙØªÙ استبداÙ٠ب٠ââ: ââ.
ÙÙØ¹Ø«Ùر عÙ٠جÙ
ÙØ¹ اÙÙØ§ØµÙات Ø ÙØ§ ÙØØªØ§Ø¬ Ø¥Ù٠استخداÙ
Ø§ÙØ³ÙØ³ÙØ© ââ â "Ø ÙÙÙÙ ÙÙ
Ø· regexp: / â / gØ Ù
ع Ø§ÙØ¹ÙاÙ
Ø© pattern: g` Ø§ÙØ¥ÙزاÙ
ÙØ©:
// replace all dashes by a colon
alert( '12-34-56'.replace( /-/g, ":" ) ) // 12:34:56
اÙÙ٠دخÙÙ Ø§ÙØ«Ø§ÙÙ ÙÙ Ø³ÙØ³ÙØ© بدÙÙØ©. ÙÙ ÙÙÙØ§ Ø§Ø³ØªØ®Ø¯Ø§Ù ØØ±Ù٠خاصة ÙÙÙ:
| Ø§ÙØ±Ù ÙØ² | Ø§ÙØ¥Ø¬Ø±Ø§Ø¡ ÙÙ Ø³ÙØ³ÙØ© Ø§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù |
|---|---|
$& |
إدراج Ø§ÙØªØ·Ø§Ø¨Ù ÙØ§Ù ÙØ§ |
|$`|إدراج جزء Ù
Ù Ø§ÙØ³ÙØ³ÙØ© ÙØ¨Ù Ø§ÙØªØ·Ø§Ø¨Ù
|
|$'|إدراج جزء Ù
Ù Ø§ÙØ³ÙØ³ÙØ© بعد اÙÙ
باراة
|
|$n|إذا ÙØ§Ù n رÙÙ
ÙØ§ Ù
ÙÙÙÙØ§ Ù
٠رÙÙ
أ٠رÙÙ
ÙÙ Ø ÙØªÙ
إدراج Ù
ØØªÙÙØ§Øª Ù
جÙ
ÙØ¹Ø© Ø§ÙØ§ÙØªÙØ§Ø· n Ø ÙÙØØµÙ٠عÙÙ Ø§ÙØªÙاصÙÙ Ø Ø±Ø§Ø¬Ø¹ [] (info: regexp-groups)|
|$<name>|إدراج Ù
ØØªÙÙØ§Øª Ø§ÙØ£ÙÙØ§Ø³ Ù
ع âØ§ÙØ§Ø³Ù
â Ø§ÙÙ
ØØ¯Ø¯ Ø ÙÙØØµÙ٠عÙÙ Ø§ÙØªÙاصÙÙ Ø Ø§ÙØ¸Ø± [] (info: regexp-groups)|
|$$|إدراج ØØ±Ù $ |
ÙÙ Ø«ÙØ§:
let str = "John Smith";
// swap first and last name
alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John
** باÙÙØ³Ø¨Ø© ÙÙÙ ÙØ§ÙÙ Ø§ÙØªÙ ØªØªØ·ÙØ¨ Ø¨Ø¯Ø§Ø¦Ù âØ°ÙÙØ©â Ø ÙÙ Ù٠أ٠تÙÙ٠اÙÙØ³Ùطة Ø§ÙØ«Ø§ÙÙØ© Ø¯Ø§ÙØ©. **
Ø³ÙØªÙ Ø§Ø³ØªØ¯Ø¹Ø§Ø¤ÙØ§ ÙÙ٠٠باراة Ø ÙØ³Ùت٠إدراج اÙÙÙÙ Ø© اÙ٠رتجعة ÙØ¨Ø¯ÙÙ.
ÙØªÙ
استدعاء اÙÙØ¸ÙÙØ© Ù
ع اÙÙØ³Ùطات func (matchØ p1Ø p2Ø ...Ø pnØ offsetØ inputØ groups):
- âØ§Ù٠باراةâ â Ø§Ù٠باراة Ø
p1Ø p2Ø ...Ø pnâ Ù ØØªÙÙØ§Øª Ù Ø¬Ù ÙØ¹Ø§Øª Ø§ÙØ§ÙØªÙØ§Ø· (Ø¥Ù ÙØ¬Ø¯Øª) Ø- âØªØ¹ÙÙØ¶â â Ù ÙÙØ¹ اÙ٠باراة Ø
- âØ§ÙØ¥Ø¯Ø®Ø§Ùâ â Ø³ÙØ³ÙØ© اÙ٠صدر Ø
اÙÙ Ø¬Ù ÙØ¹Ø§Øªâ ÙØ§Ø¦Ù ÙÙ Ù Ø¬Ù ÙØ¹Ø§Øª ٠س٠اة.
إذا ÙÙ
تÙÙ ÙÙØ§Ù Ø£ÙÙØ§Ø³ ÙÙ regexp Ø ÙÙÙØ§Ù 3 ÙØ³Ùطات ÙÙØ·: func (str Ø offset Ø input).
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙØ·Ø§Ø¨Ù Ø¬Ù ÙØ¹ اÙÙ Ø·Ø§Ø¨ÙØ§Øª Ø¨Ø£ØØ±Ù ÙØ¨Ùرة:
let str = "html and css";
let result = str.replace(/html|css/gi, str => str.toUpperCase());
alert(result); // HTML and CSS
ÙØ³Ø¨ØªØ¯Ù ÙÙ Ø§ÙØªØ·Ø§Ø¨Ùات ÙÙ Ù ÙØ§ÙÙØ§ Ù٠اÙÙÙÙ Ø© :
alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6
IÙ٠اÙÙ Ø«Ø§Ù Ø£Ø¯ÙØ§Ù ÙÙØ¬Ø¯ ÙÙØ³ÙÙ Ø ÙØ°ÙÙ ÙØªÙ استدعاء ÙØ¸ÙÙØ© Ø§ÙØ§Ø³ØªØ¨Ø¯Ø§Ù بخ٠س ÙØ³Ùطات: Ø§ÙØ£ÙÙÙ ÙÙ Ø§ÙØªØ·Ø§Ø¨Ù اÙÙØ§Ù Ù Ø Ø«Ù ÙÙØ³ÙÙ Ø ÙØ¨Ø¹Ø¯Ùا (ØºÙØ± ٠ستخد٠ة Ù٠اÙ٠ثاÙ) Ù ÙØ¶Ø¹ اÙÙ Ø·Ø§Ø¨ÙØ© ÙØ³ÙØ³ÙØ© اÙ٠صدر:
let str = "John Smith";
let result = str.replace(/(\w+) (\w+)/, (match, name, surname) => `${surname}, ${name}`);
alert(result); // Smith, John
إذا ÙØ§Ù ÙÙØ§Ù Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙ Ø¬Ù ÙØ¹Ø§Øª Ø Ù٠٠اÙÙ ÙØ§Ø³Ø¨ استخدا٠٠عÙ٠ات Ø§ÙØ±Ø§ØØ© ÙÙÙØµÙ٠إÙÙÙØ§:
let str = "John Smith";
let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}`);
alert(result); // Smith, John
Ø£Ù Ø Ø¥Ø°Ø§ ÙÙØ§ ÙØ³ØªØ®Ø¯Ù
Ù
جÙ
ÙØ¹Ø§Øª Ù
سÙ
اة Ø ÙØ¥Ù ÙØ§Ø¦Ù groups Ù
عÙÙ
ÙÙÙ٠دائÙ
ÙØ§ ÙÙ Ø§ÙØ£Ø®Ùر Ø ÙØ°Ø§ ÙÙ
ÙÙÙØ§ Ø§ÙØØµÙ٠عÙÙÙ ÙÙ
ا ÙÙÙ:
let str = "John Smith";
let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => {
let groups = match.pop();
return `${groups.surname}, ${groups.name}`;
});
alert(result); // Smith, John
ÙÙ ÙØÙØ§ Ø§Ø³ØªØ®Ø¯Ø§Ù Ø¯Ø§ÙØ© Ø§ÙØ·Ø§ÙØ© Ø§ÙØ¨Ø¯ÙÙØ© اÙÙØµÙÙ Ø ÙØ£ÙÙØ§ ØªØØµÙ عÙÙ Ø¬Ù ÙØ¹ اÙ٠عÙÙ٠ات ØÙ٠اÙ٠باراة Ø ÙÙØ¯ÙÙØ§ Ø¥Ù ÙØ§ÙÙØ© اÙÙØµÙ٠إÙ٠اÙÙ ØªØºÙØ±Ø§Øª Ø§ÙØ®Ø§Ø±Ø¬ÙØ© ÙÙÙ ÙÙÙØ§ اÙÙÙØ§Ù بÙÙ Ø´ÙØ¡.
str.replaceAll(str|regexp, str|func)
This method is essentially the same as str.replace, with two major differences:
- If the first argument is a string, it replaces all occurences of the string, while
replacereplaces only the first occurence. - If the first argument is a regular expression without the
gflag, thereâll be an error. Withgflag, it works the same asreplace.
The main use case for replaceAll is replacing all occurences of a string.
Like this:
// replace all dashes by a colon
alert('12-34-56'.replaceAll("-", ":")) // 12:34:56
regexp.exec(str)
ØªÙØ¸Ùر Ø§ÙØ·Ø±ÙÙØ© regexp.exec (str) Ù
Ø·Ø§Ø¨ÙØ© ÙÙ regexp ÙÙ Ø§ÙØ³ÙØ³ÙØ©str. عÙÙ Ø¹ÙØ³ Ø§ÙØ·Ø±Ù Ø§ÙØ³Ø§Ø¨ÙØ© Ø ÙØªÙ
استدعاء regexp Ø ÙÙÙØ³ عÙÙ Ø³ÙØ³ÙØ©.
ÙØªØµØ±Ù بشÙÙ Ù
ختÙ٠اعتÙ
Ø§Ø¯ÙØ§ عÙÙ Ù
ا إذا ÙØ§Ù regexp ÙØØªÙ٠عÙÙ Ø¹ÙØ§Ù
Ø© g.
إذا ÙÙ
ÙÙÙ ÙÙØ§Ù g Ø ÙØ¥Ùregexp.exec (str)ØªÙØ±Ø¬Ø¹ اÙÙ
Ø·Ø§Ø¨ÙØ© Ø§ÙØ£ÙÙÙ ÙÙ
اstr.match (regexp). ÙØ°Ø§ Ø§ÙØ³ÙÙÙ ÙØ§ ÙØ¬Ùب Ø£Ù Ø´ÙØ¡ Ø¬Ø¯ÙØ¯.
ÙÙÙ٠إذا ÙØ§Ù ÙÙØ§Ù Ø¹ÙØ§Ù
Ø© g Ø ÙØ¹ÙدئذÙ:
- ÙØ¤Ø¯Ù استدعاء âregexp.exec (str)
Ø¥Ù٠إرجاع اÙ٠باراة Ø§ÙØ£ÙÙÙ ÙØÙØ¸ اÙÙ Ø±ÙØ² ÙÙØ±Ùا ÙÙ Ø§ÙØ®Ø§ØµÙØ©regexp.lastIndexâ. - تبدأ ÙØ°Ù اÙÙ
ÙØ§ÙÙ
Ø© Ø§ÙØªØ§ÙÙØ© Ø§ÙØ¨ØØ« Ù
٠اÙÙ
ÙØ¶Ø¹
regexp.lastIndexØ ÙØªØ¹Ùد اÙ٠باراة Ø§ÙØªØ§ÙÙØ© ÙØªØÙظ اÙÙ Ø±ÙØ² Ø¨Ø¹Ø¯ÙØ§ ÙÙregexp.lastIndex. - â¦Ù٠ا Ø¥Ù٠ذÙÙ ÙÙÙ٠جرا.
- ÙÙ ØØ§ÙØ© عدÙ
ÙØ¬Ùد ØªØ·Ø§Ø¨ÙØ§Øª Ø ÙÙØ±Ø¬Ø¹
regexp.exec`` nullÙÙØ¹Ùد تعÙÙÙregexp.lastIndexØ¥ÙÙ0.
ÙØ°Ø§ Ø ØªØ¹ÙØ¯ اÙÙ
ÙØ§ÙÙ
ات اÙÙ
ØªÙØ±Ø±Ø© جÙ
ÙØ¹ Ø§ÙØªØ·Ø§Ø¨Ùات اÙÙØ§ØØ¯Ø© تÙÙ Ø§ÙØ£Ø®Ø±Ù Ø Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù
Ø§ÙØ®Ø§ØµÙØ© regexp.lastIndex ÙØªØªØ¨Ø¹ Ù
ÙØ¶Ø¹ Ø§ÙØ¨ØØ« Ø§ÙØØ§ÙÙ.
Ù٠اÙÙ
Ø§Ø¶Ù Ø ÙØ¨Ù Ø¥Ø¶Ø§ÙØ© Ø§ÙØ£Ø³ÙÙØ¨ str.matchAll Ø¥ÙÙ Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت Ø ØªÙ
استخداÙ
Ù
ÙØ§ÙÙ
اتregexp.exec ÙÙ Ø§ÙØÙÙØ© ÙÙØØµÙ٠عÙ٠جÙ
ÙØ¹ Ø§ÙØªØ·Ø§Ø¨Ùات Ù
ع اÙÙ
جÙ
ÙØ¹Ø§Øª:
let str = 'More about JavaScript at https://javascript.info';
let regexp = /javascript/ig;
let result;
while (result = regexp.exec(str)) {
alert( `Found ${result[0]} at position ${result.index}` );
// Found JavaScript at position 11, then
// Found javascript at position 33
}
ÙØ¹Ù
Ù ÙØ°Ø§ Ø§ÙØ¢Ù Ø£ÙØ¶Ùا Ø Ø¹ÙÙ Ø§ÙØ±ØºÙ
Ù
٠أ٠اÙÙ
ØªØµÙØØ§Øª Ø§ÙØ£ØØ¯Ø« str.matchAll تÙÙÙ Ø¹Ø§Ø¯Ø©Ù Ø£ÙØ«Ø± Ù
ÙØ§Ø¡Ù
Ø©.
** ÙÙ ÙÙÙØ§ استخدا٠âregexp.execâ ÙÙØ¨ØØ« Ù Ù Ù ÙØ¶Ø¹ ٠عÙ٠ع٠طرÙ٠تعÙÙÙ âlastIndexâ ÙØ¯ÙÙÙØ§. **
عÙ٠سبÙ٠اÙ٠ثاÙ:
let str = 'Hello, world!';
let regexp = /\w+/g; // without flag "g", lastIndex property is ignored
regexp.lastIndex = 5; // search from 5th position (from the comma)
alert( regexp.exec(str) ); // world
إذا ÙØ§Ù regexp ÙØØªÙ٠عÙÙ Ø¹ÙØ§Ù
Ø© y Ø ÙØ³ÙتÙ
إجراء Ø§ÙØ¨ØØ« تÙ
اÙ
ÙØ§ Ù٠اÙÙ
ÙØ¶Ø¹regexp.lastIndex Ø ÙÙÙØ³ بعد ذÙÙ.
ÙÙØ³ØªØ¨Ø¯Ù Ø§ÙØ¹ÙاÙ
Ø© g ب٠y Ù٠اÙÙ
Ø«Ø§Ù Ø£Ø¹ÙØ§Ù. Ù٠تÙÙÙ ÙÙØ§Ù ØªØ·Ø§Ø¨ÙØ§Øª Ø ØÙØ« ÙØ§ ØªÙØ¬Ø¯ ÙÙÙ
Ø© Ù٠اÙÙ
ÙØ¶Ø¹ 5:
let str = 'Hello, world!';
let regexp = /\w+/y;
regexp.lastIndex = 5; // search exactly at position 5
alert( regexp.exec(str) ); // null
ÙØ°Ø§ Ù ÙØ§Ø³Ø¨ ÙÙØØ§ÙØ§Øª Ø§ÙØªÙ ÙØØªØ§Ø¬ ÙÙÙØ§ Ø¥ÙÙ âÙØ±Ø§Ø¡Ø©â Ø´ÙØ¡ ٠ا Ù Ù Ø§ÙØ³ÙØ³ÙØ© ع٠طرÙÙ Ø§ÙØªØ¹Ø¨Ùر Ø§ÙØ¹Ø§Ø¯Ù Ù٠اÙÙ ÙØ¶Ø¹ اÙÙ ØØ¯Ø¯ Ø ÙÙÙØ³ ÙÙ Ù ÙØ§Ù آخر.
regexp.test(str)
ØªØ¨ØØ« Ø§ÙØ·Ø±ÙÙØ© regexp.test (str) Ø¹Ù ØªØ·Ø§Ø¨Ù ÙØªØ¹Ø±Ø¶ true / false Ø³ÙØ§Ø¡ ÙØ§Ùت Ù
ÙØ¬Ùدة.
عÙ٠سبÙ٠اÙ٠ثاÙ:
let str = "I love JavaScript";
// these two tests do the same
alert( /love/i.test(str) ); // true
alert( str.search(/love/i) != -1 ); // true
Ù Ø«Ø§Ù Ø¨Ø§ÙØ¥Ø¬Ø§Ø¨Ø© Ø§ÙØ³ÙØ¨ÙØ©:
let str = "Bla-bla-bla";
alert( /love/i.test(str) ); // false
alert( str.search(/love/i) != -1 ); // false
إذا ÙØ§Ù regexp ÙØØªÙ٠عÙÙ Ø¹ÙØ§Ù
Ø© g Ø ÙØ³ÙØ¸ÙØ±regexp.test Ù
Ù Ø®Ø§ØµÙØ© regexp.lastIndex ÙÙØØ¯Ø« ÙØ°Ù Ø§ÙØ®Ø§ØµÙØ© Ø Ù
Ø«Ùregexp.exec تÙ
اÙ
ÙØ§.
ÙØ°Ø§ ÙÙ ÙÙÙØ§ استخدا٠٠ÙÙØ¨ØØ« Ù Ù Ù ÙØ¶Ø¹ ٠عÙÙ:
let regexp = /love/gi;
let str = "I love JavaScript";
// start the search from position 10:
regexp.lastIndex = 10;
alert( regexp.test(str) ); // false (no match)
إذا طبÙÙØ§ ÙÙØ³ regexp Ø§ÙØ¹Ø§Ù
عÙ٠اÙÙ
Ø¯Ø®ÙØ§Øª اÙÙ
ختÙÙØ© Ø ÙÙØ¯ ÙØ¤Ø¯Ù ذÙ٠إÙÙ ÙØªÙجة خاطئة Ø ÙØ£Ù استدعاء regexp.test ÙÙÙØ¯Ù
Ø®Ø§ØµÙØ©regexp.lastIndex Ø ÙØ°ÙÙ ÙØ¯ ÙØ¨Ø¯Ø£ Ø§ÙØ¨ØØ« ÙÙ Ø³ÙØ³ÙØ© أخر٠Ù
Ù Ù
ÙØ¶Ø¹ ØºÙØ± ØµÙØ±Ù.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø ÙÙØ§ ÙØ³Ù Ù âregexp.testâ ٠رتÙ٠عÙÙ ÙÙØ³ اÙÙØµ Ø ÙØªÙش٠اÙ٠رة Ø§ÙØ«Ø§ÙÙØ©:
تشغÙÙ Ø´Ø¨ÙØ¨Ø© let regexp = / javascript / g Ø // (regexp Ø§ÙØ°Ù ØªÙ Ø¥ÙØ´Ø§Ø¤Ù ÙÙØªÙ: regexp.lastIndex = 0)
ØªÙØ¨ÙÙ (regexp.test (âjavascriptâ)) Ø // true (regexp.lastIndex = 10 Ø§ÙØ¢Ù) ØªÙØ¨ÙÙ (regexp.test (âjavascriptâ)) Ø // خاطئة ``
ÙØ°Ø§ Ø¨Ø§ÙØ¶Ø¨Ø· ÙØ£Ù âregexp.lastIndexâ ÙÙØ³ ØµÙØ±Ø§Ù ÙÙ Ø§ÙØ§Ø®ØªØ¨Ø§Ø± Ø§ÙØ«Ø§ÙÙ.
ÙÙØªØºÙب عÙ٠ذÙÙ Ø ÙÙ
ÙÙÙØ§ تعÙÙÙ regexp.lastIndex = 0 ÙØ¨Ù ÙÙ Ø¨ØØ«. Ø£Ù Ø¨Ø¯ÙØ§Ù Ù
٠استدعاء طر٠عÙÙ regexp Ø Ø§Ø³ØªØ®Ø¯Ù
أساÙÙØ¨ Ø§ÙØ³ÙØ³ÙØ© str.match / search / ... Ø ÙÙØ§ ÙØ³ØªØ®Ø¯Ù
ÙÙ lastIndex.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)