RegExp.prototype[Symbol.search]()
åºçº¿
广æ³å¯ç¨
èª 2016å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
RegExp å®ä¾ç [Symbol.search]() æ¹æ³æå®äº String.prototype.search() çè¡ä¸ºã
è¯æ³
js
regexp[Symbol.search](str)
åæ°
è¿åå¼
- æ´æ°
-
妿æåçè¯ï¼
[Symbol.search]()è¿å该æ£å模å¼ç第ä¸ä¸ªå¹é 项çå¨å符串ä¸çä½ç½®ç´¢å¼ãå¦åå°è¿å -1ã
æè¿°
è¿ä¸ªæ¹æ³å¨ String.prototype.search() çå
é¨è°ç¨ãä¾å¦ï¼ä¸é¢çä¸¤ä¸ªæ¹æ³è¿åç¸åç»æã
js
"abc".search(/a/);
/a/[Symbol.search]("abc");
è¿ä¸ªæ¹æ³ä¸ºèªå®ä¹ RegExp åç±»ä¸çå¹é
è¡ä¸ºèåå¨ã
示ä¾
>ç´æ¥è°ç¨
è¿ä¸ªæ¹æ³çä½¿ç¨æ¹å¼å String.prototype.search() ç¸åï¼ä¸åä¹å¤æ¯ this ååæ°é¡ºåºã
js
var re = /-/g;
var str = "2016-01-02";
var result = re[Symbol.search](str);
console.log(result); // 4
å¨åç±»ä¸ä½¿ç¨ [Symbol.search]()
{jsxref("RegExp")}} çåç±»å¯ä»¥è¦å [Symbol.search]()æ¹æ³æ¥ä¿®æ¹é»è®¤è¡ä¸ºã
js
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 è°ç¨ re[Symbol.search]()ã
console.log(result); // 3
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-regexp.prototype-%symbol.search%> |