Baseline Widely available
RegExp
å®ä¾ç [Symbol.match]()
æ¹æ³æå®äº String.prototype.match()
çè¡ä¸ºãæ¤å¤ï¼å®çåå¨ï¼æä¸åå¨ï¼å¯è½ä¼å½±å对象æ¯å¦è¢«è§ä¸ºæ£å表达å¼ã
class RegExp1 extends RegExp {
[Symbol.match](str) {
const result = RegExp.prototype[Symbol.match].call(this, str);
if (result) {
return "VALID";
}
return "INVALID";
}
}
console.log("2012-07-02".match(new RegExp1("([0-9]+)-([0-9]+)-([0-9]+)")));
// Expected output: "VALID"
è¯æ³
regexp[Symbol.match](str)
åæ°
str
match çç®æ åæ°æ¯String
match æ¹æ³ä¼è¿åä¸ä¸ªæ°ç»ï¼å®å æ¬æ´ä¸ªå¹é ç»æï¼åéè¿æè·ç»å¹é å°çç»æï¼å¦ææ²¡æå¹é å°åè¿å null
æè¿°è¿ä¸ªæ¹æ³å¨ String.prototype.match()
çå
é¨è°ç¨ãä¾å¦ï¼ä¸é¢çä¸¤ä¸ªæ¹æ³è¿åç¸åç»æã
"abc".match(/a/);
/a/[Symbol.match]("abc");
è¿ä¸ªæ¹æ³ä¸ºèªå®ä¹ RegExp
åç±»ä¸çå¹é
è¡ä¸ºèåå¨ã
è¿ä¸ªæ¹æ³çä½¿ç¨æ¹å¼å String.prototype.match()
ç¸åï¼ä¸åä¹å¤æ¯ this
ååæ°é¡ºåºã
var re = /[0-9]+/g;
var str = "2016-01-02";
var result = re[Symbol.match](str);
console.log(result); // ["2016", "01", "02"]
å¨åç±»ä¸ä½¿ç¨ [Symbol.match]()
RegExp
çåç±»å¯ä»¥è¦å [Symbol.match]()
æ¹æ³æ¥ä¿®æ¹é»è®¤è¡ä¸ºã
class MyRegExp extends RegExp {
[Symbol.match](str) {
var result = RegExp.prototype[Symbol.match].call(this, str);
if (!result) return null;
return {
group(n) {
return result[n];
},
};
}
}
var re = new MyRegExp("([0-9]+)-([0-9]+)-([0-9]+)");
var str = "2016-01-02";
var result = str.match(re); // String.prototype.match è°ç¨ re[Symbol.match]()ã
console.log(result.group(1)); // 2016
console.log(result.group(2)); // 01
console.log(result.group(3)); // 02
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4