String.prototype.search()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
search() æ¹æ³ç¨äºå¨ String å¯¹è±¡ä¸æ§è¡æ£å表达å¼çæç´¢ï¼å¯»æ¾å¹é
项ã
å°è¯ä¸ä¸
const paragraph = "I think Ruth's dog is cuter than your dog!";
// Anything not a word character, whitespace or apostrophe
const regex = /[^\w\s']/g;
console.log(paragraph.search(regex));
// Expected output: 41
console.log(paragraph[paragraph.search(regex)]);
// Expected output: "!"
è¯æ³
search(regexp)
åæ°
regexp-
ä¸ä¸ªæ£å表达å¼å¯¹è±¡ï¼æè å ·æ
Symbol.searchæ¹æ³çä»»æå¯¹è±¡ã妿
regexp䏿¯RegExp对象ï¼å¹¶ä¸ä¸å ·æSymbol.searchæ¹æ³ï¼åä¼ä½¿ç¨new RegExp(regexp)å°å ¶éå¼è½¬æ¢ä¸ºRegExpã
è¿åå¼
妿å¹é
æåï¼åè¿åæ£å表达å¼å¨å符串ä¸é¦æ¬¡å¹é
çç´¢å¼ï¼å¦åï¼è¿å -1ã
æè¿°
String.prototype.search() æ¹æ³çå®ç°é常ç®åââå®åªæ¯å°è¯¥å符串ä½ä¸ºè°ç¨å®åæ¥æç Symbol.search æ¹æ³ç第ä¸ä¸ªåæ°ãå®é
çå®ç°æ¥èªäº RegExp.prototype[Symbol.search]()ã
regexp ç g æ å¿å¯¹ search() æ¹æ³çç»ææ²¡æå½±åï¼æç´¢æ»æ¯ä»¥æ£å表达å¼ç lastIndex 为 0 è¿è¡ãæå
³ search() æ¹æ³è¡ä¸ºçæ´å¤ä¿¡æ¯ï¼è¯·åé
RegExp.prototype[Symbol.search]()ã
å½ä½ æ³ç¥éåç¬¦ä¸²ä¸æ¯å¦åå¨æä¸ªæ¨¡å¼ï¼å¹¶ä¸è¿æ³ç¥éå®å¨å符串ä¸çç´¢å¼æ¶ï¼å¯ä»¥ä½¿ç¨ search() æ¹æ³ã
- å¦æä½ åªæ³ç¥éæä¸ªæ¨¡å¼æ¯å¦åå¨ï¼è¯·ä½¿ç¨
RegExp.prototype.test()æ¹æ³ï¼å®è¿åä¸ä¸ªå¸å°å¼ã - å¦æä½ éè¦è·åå¹é
ææ¬çå
容ï¼è¯·ä½¿ç¨
match()æRegExp.prototype.exec()ã
示ä¾
>ä½¿ç¨ search()
ä¸é¢ç示ä¾ä¸ç¨ä¸¤ä¸ªä¸åçæ£å表达å¼å¯¹åä¸ä¸ªå符串æ§è¡æç´¢å¹é
ï¼å¾å°ä¸ä¸ªæåå¹é
ï¼æ£æ°è¿åå¼ï¼åä¸ä¸ªå¤±è´¥å¹é
ï¼-1ï¼ã
const str = "hey JudE";
const re = /[A-Z]/;
const reDot = /[.]/;
console.log(str.search(re)); // è¿å 4ï¼è¿æ¯ç¬¬ä¸ä¸ªå¤§å忝âJâçç´¢å¼
console.log(str.search(reDot)); // è¿å -1ï¼æ¾ä¸å°ç¹ç¬¦å·â.â
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.search> |