الفرق بين المراجعتين ل"JavaScript/RegExp/@@search"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
 
ط (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
 
سطر 72: سطر 72:
 
* مسودة المعيار [https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search ECMAScript Latest Draft].
 
* مسودة المعيار [https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search ECMAScript Latest Draft].
 
* معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype-@@search ECMAScript 2015 (6th Edition)]‎.  
 
* معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype-@@search ECMAScript 2015 (6th Edition)]‎.  
[[تصنيف:JavaScript]]
+
[[تصنيف:JavaScript|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Global Objects]]
+
[[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript RegExp]]
+
[[تصنيف:JavaScript RegExp|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 15:39، 28 يناير 2018

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

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