RegExp.prototype.[@@search]()
< JavaScript | RegExp
اذهب إلى التنقل
اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
الدالة RegExp.prototype.[@@search]()
تبحث عن تعبيرٍ نمطيٍ (regular expression) في سلسلةٍ نصية.
البنية العامة
regexp[Symbol.search](str)
str
السلسلة النصية التي سنبحث عن مُطابَقة للتعبير النمطي فيها.
القيمة المعادة
فهرس أوّل مطابقة للتعبير النمطي في السلسلة النصية، أو القيمة -1 إن لم تكن هنالك مطابقة.
الوصف
تُستدعى هذه الدالة داخليًا في الدالة String.prototype.search()
. فمثلًا، كلا المثالين الآتيين يُعيد النتيجة نفسها:
'abc'.search(/a/);
/a/[Symbol.search]('abc');
الغرض من وجود هذه الدالة هو السماح بإمكانية تخصيصها في الأصناف الفرعية المشتقة من RegExp
.
أمثلة
استدعاء مباشر
ستُستخدَم هذه الدالة بنفس طريقة استخدام الدالة String.prototype.search()
:
var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.search](str);
console.log(result); // 4
استخدام @@search
في الأصناف الفرعية
يمكن للأصناف الفرعية المشتقة من الصنف RegExp
إعادة تعريف الدالة [@@search]()
لتغيير سلوكها الافتراضي:
class MyRegExp extends RegExp {
constructor(str) {
super(str)
this.pattern = str;
}
[Symbol.search](str) {
return str.indexOf(this.pattern);
}
}
var re = new MyRegExp('a+b');
var str = 'ab a+b';
var result = str.search(re); // String.prototype.search calls re[@@search].
console.log(result); // 3
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | 49 | غير مدعومة | نعم | نعم |
على النقيض من متصفح IE، يدعم Edge هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).