RegExp.prototype.[@@search]()
< JavaScript | RegExp
الدالة 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).