الفرق بين المراجعتين لصفحة: «JavaScript/RegExp/exec»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 115: | سطر 115: | ||
* معيار [http://www.ecma-international.org/ecma-262/5.1/#sec-15.10.6.21 ECMAScript 5.1]. | * معيار [http://www.ecma-international.org/ecma-262/5.1/#sec-15.10.6.21 ECMAScript 5.1]. | ||
* معيار [http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf ECMAScript 3rd Edition]. | * معيار [http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf ECMAScript 3rd Edition]. | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript Global Objects]] | [[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript RegExp]] | [[تصنيف:JavaScript RegExp|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 15:43، 28 يناير 2018
الدالة RegExp.prototype.exec()
تجرى بحثًا عن مطابقة للتعبير النمطي في السلسلة النصية المُحدَّدة، وتُعيد مصفوفة النتائج، أو القيمة null
.
إذا كانتَ تريد تنفيذ البحث لمعرفة إن كانت القيمة موجودةً أم لا فاستخدام الدالة RegExp.prototype.test()
أو الدالة String.prototype.search()
.
البنية العامة
regexObj.exec(str)
str
السلسلة النصية التي سنبحث عن مُطابَقة للتعبير النمطي فيها.
القيمة المعادة
إذا نجحت عملية المطابقة، فستُعيد الدالة exec()
مصفوفةً وتُحدِّث خاصيات كائن التعابير النمطية. المصفوفة المعادة ستحتوي على النص المُطابَق في أوّل عنصر فيها، ثم العناصر التي تليه ستحتوي على الأنماط الفرعية التي جرت مطابقتها في النص.
إذا لم تنجح عملية المطابقة، فستُعيد الدالة exec()
القيمة null
.
الوصف
سنشرح كيف تعمل هذه الدالة بإعطاء مثال، لاحظ أنَّنا استخدمنا الرايتين g
(أي global
) و i
(أي ignoreCase
):
var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
الجدول الآتي يُوضِّح نتائج السكربت السابق:
الكائن | الخاصية أو الفهرس | الوصف | مثال |
---|---|---|---|
result
|
[0]
|
السلسلة النصية التي جرت مُطابَقَتُها | Quick Brown Fox Jumps
|
[1], ...[n]
|
السلاسل النصية الفرعية التي تمت مطابقتها من الأنماط الموجودة بين قوسين (إن كانت متوافرة). | [1] = Brown
| |
index
|
فهرس بداية المُطابَقة في السلسلة النصية، ويبدأ العد من الفهرس 0. | 4
| |
input
|
السلسلة النصية الأصلية. | The Quick Brown Fox Jumps Over The Lazy Dog
| |
re
|
lastIndex
|
الفهرس الذي ستبدأ عنده عملية البحث عن المطابقة التالية. وإذا لم تكن الراية "g " مضبوطةً فستبقى قيمته مساويةً للصفر.
|
25
|
ignoreCase
|
تحديد إن كانت الراية "i " (التي تُستخدَم لتجاهل حالة الأحرف) مضبوطةً أم لا.
|
true
| |
global
|
تحديد إن كانت الراية "g " (التي تُستخدَم لإيجاد جميع المطابقات في السلسلة النصية) مضبوطةً أم لا.
|
true
| |
multiline
|
تحديد إن كانت الراية "m " (التي تُستخدَم لجعل المطابقة تجري سطرًا بسطر) مضبوطةً أم لا.
|
false
| |
source
|
النص المصدري للتعبير النمطي | quick\s(brown).+?(jumps)
|
أمثلة
العثور على المطابقات التالية
إذا كانت الراية "g
" مضبوطةً في التعبير النمطي الذي تستخدمه، فيمكنك استعمال الدالة exec()
عدِّة مرات للعثور على جميع المطابقات في السلسلة النصية، وعندما تفعل ذلك، فسيبدأ البحث بدءًا من الفهرس المُشار إليه عبر الخاصية lastIndex
:
var myRe = /ab*/g;
var str = 'abbcdefabh';
var myArray;
while ((myArray = myRe.exec(str)) !== null) {
var msg = 'Found ' + myArray[0] + '. ';
msg += 'Next match starts at ' + myRe.lastIndex;
console.log(msg);
}
سيعرض المثال السابق الناتج الآتي:
Found abb. Next match starts at 3
Found ab. Next match starts at 9
ملاحظة: لا تضع التعبير النمطي (بالشكل المختصر أو عبر استخدام الدالة البانية RegExp
) ضمن حلقة التكرار while
وإلا فستُنشَأ حلقة تكرار لا نهائية وذلك لأنَّ الخاصية lastIndex
سيُعاد ضبطها في كل تكرار، واحرص أيضًا على ضبط الراية "g
" وإلا فستحدث حلقة تكرار لا نهائية أيضًا.
استخدام الدالة exec()
مع الشكل المختصر للتعابير النمطية
يمكنك أيضًا استخدام الدالة exec()
دون استخدام الدالة البانية RegExp
:
var matches = /(hello \S+)/.exec('This is a hello world!');
console.log(matches[1]); // "hello world!"
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | نعم | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 3rd Edition.