RegExp.prototype.[@@search]()‎

من موسوعة حسوب

الدالة 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 هذه الميزة.

مصادر ومواصفات