Baseline Widely available
sticky
㯠RegExp
ã¤ã³ã¹ã¿ã³ã¹ã®ã¢ã¯ã»ãµã¼ããããã£ã§ããã®æ£è¦è¡¨ç¾ã« y
ãã©ã°ã使ç¨ããã¦ãããã©ãããè¿ãã¾ãã
const str1 = "table football";
const regex1 = new RegExp("foo", "y");
regex1.lastIndex = 6;
console.log(regex1.sticky);
// Expected output: true
console.log(regex1.test(str1));
// Expected output: true
console.log(regex1.test(str1));
// Expected output: false
解説
RegExp.prototype.sticky
ã®å¤ã true
ãªãã° y
ãã©ã°ã使ããã¦ããï¼ç²ççæ£è¦è¡¨ç¾ï¼ãããã§ãªããã° false
ã«ãªãã¾ããy
ãã©ã°ã¯ãã®æ£è¦è¡¨ç¾ãå¯¾è±¡ã®æååã lastIndex
ããããã£ã§ç¤ºãããã¤ã³ããã¯ã¹ããã®ã¿ç
§åã試ã¿ããã¨ã示ãã¾ãï¼ããã¦ã°ãã¼ãã«æ£è¦è¡¨ç¾ã¨ã¯ç°ãªãããã以éã®ã¤ã³ããã¯ã¹ããã®ç
§åã¯è©¦ã¿ã¾ããï¼ã
sticky
ã®è¨å®ã¢ã¯ã»ãµã¼ã¯ undefined
ã§ãããã®ããããã£ãç´æ¥å¤æ´ãããã¨ã¯ã§ãã¾ããã
ç²ççæ£è¦è¡¨ç¾ã¨ã°ãã¼ãã«æ£è¦è¡¨ç¾ã®ä¸¡æ¹ã®å ´åã¯ã次ã®ããã«ãªãã¾ãã
lastIndex
ã§ç
§åãéå§ãã¾ããlastIndex
ã¯ä¸è´é¨åã®æ«å°¾ã¾ã§é²ã¿ã¾ããlastIndex
ãç¾å¨ç
§åãã¦ããæååã®ç¯å²ãè¶
ããããlastIndex
㯠0 ããªã»ãããã¾ãããã ããexec()
ã¡ã½ããã«ã¤ãã¦ã¯ãç
§åã«å¤±æããã¨ãã®åä½ãç°ãªãã¾ãã
exec()
ã¡ã½ãããç²ççãªæ£è¦è¡¨ç¾ã§å¼ã³åºãããå ´åããã®æ£è¦è¡¨ç¾ã lastIndex
ã§ã®ç
§åã«å¤±æããå ´åã¯ãæ£è¦è¡¨ç¾ã¯ç´ã¡ã« null
ãè¿ã lastIndex
ã 0 ã«ãªã»ãããã¾ããexec()
ã¡ã½ãããã°ãã¼ãã«æ£è¦è¡¨ç¾ã§å¼ã³åºãããå ´åããã®æ£è¦è¡¨ç¾ã lastIndex
ã§ã®ç
§åã«å¤±æããå ´åã¯ãæ¬¡ã®æåããç
§åãããã¨ããä¸è´ãããã®ãè¦ã¤ãããæååã®æ«å°¾ã«éããã¾ã§é²ã¿ã¾ããexec()
ã¡ã½ããã§ã¯ãç²ççãã¤ã°ãã¼ãã«ãªæ£è¦è¡¨ç¾ã¯ãç²ççãã¤ã°ãã¼ãã«ã§ãªãæ£è¦è¡¨ç¾ã¨åãåä½ããã¾ããtest()
㯠exec()
ã®åç´ãªã©ããã¼ãªã®ã§ãtest()
ã¯ã°ãã¼ãã«ãã©ã°ãç¡è¦ãã¦åæ§ã«ç²ççãªç
§åãè¡ãã¾ããããããä»ã«ãã°ãã¼ãã«æ£è¦è¡¨ç¾ã®æåãç¹æ®åããã¡ã½ãããããããããããã ä¸è¬çã«ã¯ã°ãã¼ãã«ãã©ã°ã¯ç²çãã©ã°ã¨ç´äº¤ãã¾ãã
String.prototype.matchAll()
ï¼RegExp.prototype[Symbol.matchAll]()
ãå¼ã³åºãï¼ã§ã¯ y
, g
, gy
ã¯ãã¹ã¦ç°ãªãã¾ãã
y
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãmatchAll()
ã§ã¯ä¾å¤ãçºçãã¾ãã[Symbol.matchAll]()
㯠exec()
ã®çµæã 1 ã¤ã ãçæãã¾ããããã®æ£è¦è¡¨ç¾ã® lastIndex
ãæ´æ°ãã¾ããg
ã¾ã㯠gy
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãexec()
ã®çµæãçæããã¤ãã¬ã¼ã¿ã¼ãè¿ãã¾ããString.prototype.match()
ï¼RegExp.prototype[Symbol.match]()
ãå¼ã³åºãï¼ã§ã¯ y
, g
, gy
ã¯ãã¹ã¦ç°ãªãã¾ãã
y
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãexec()
ã®çµæãè¿ãããã®æ£è¦è¡¨ç¾ã® lastIndex
ãæ´æ°ãã¾ããg
ã¾ã㯠gy
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ããã¹ã¦ã® exec()
ã®çµæãé
åã§è¿ãã¾ããString.prototype.search()
ï¼RegExp.prototype[Symbol.search]()
ãå¼ã³åºãï¼ã§ã¯ g
ãã©ã°ã¯å¸¸ã«ç¡è¦ããã¾ãã
y
ã¾ã㯠gy
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ã常㫠0
ï¼æååã®ä¸è´ç®æã®æãå
é ï¼ã¾ã㯠-1
ï¼å
é ã«ä¸è´ããªãã£ãå ´åï¼ãè¿ããåå¨ããå ´åã§ã lastIndex
ãæ´æ°ãã¾ãããg
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãæååä¸ã§æåã«ä¸è´ããç®æã®ã¤ã³ããã¯ã¹ãè¿ãã¾ããä¸è´ãããã®ãè¦ã¤ãããªãã£ãå ´å㯠-1
ãè¿ãã¾ããString.prototype.split()
ï¼RegExp.prototype[Symbol.split]()
ãå¼ã³åºãï¼ã§ã¯ y
, g
,gy
ã¯ãã¹ã¦åãåä½ããã¾ããString.prototype.replace()
ï¼RegExp.prototype[Symbol.replace]()
ãå¼ã³åºãï¼ã§ã¯ãy
, g
, gy
ã¯ãã¹ã¦ç°ãªãã¾ãã
y
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãç¾å¨ã® lastIndex
ã®ä½ç½®ã§ç½®æãä¸åº¦å®è¡ããlastIndex
ãæ´æ°ãã¾ããg
ããã³ gy
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãexec()
ã«ä¸è´ãããã¹ã¦ã®ç®æãç½®æãã¾ããString.prototype.replaceAll()
ï¼RegExp.prototype[Symbol.replace]()
ãå¼ã³åºãï¼ã§ã¯ y
, g
, gy
ã¯ãã¹ã¦ç°ãªãã¾ãã
y
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãreplaceAll()
ã¯ä¾å¤ãçºçãã¾ããg
ããã³ gy
ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦ã¯ãexec()
ã«ä¸è´ãããã¹ã¦ã®ç®æãç½®æãã¾ããconst str = "#foo#";
const regex = /foo/y;
regex.lastIndex = 1;
regex.test(str); // true
regex.lastIndex = 5;
regex.test(str); // false ï¼lastIndex ã¯ç²çãã©ã°ã§èæ
®ããã¾ãï¼
regex.lastIndex; // 0 ï¼ç
§åã«å¤±æããå¾ã§ãªã»ããï¼
ã¢ã³ã«ã¼ã«ãªã sticky ãã©ã°
Firefox ã® SpiderMonkey ã¨ã³ã¸ã³ã®ä¸é¨ã®ãã¼ã¸ã§ã³ã§ã¯ ^
æå®ã«é¢ãããã°ãããã ^
ã¢ãµã¼ã·ã§ã³ã§å§ã¾ãã sticky ãã©ã°ã使ããã¨ã§ä¸è´ããªãå¼ã許å¯ãã¦ãã¾ããããã®ãã°ã¯ Firefox 3.6 以éã§çºçãï¼ãã以å㯠sticky ãå®è£
ããã¦ãã¦ããã°ã¯ããã¾ããã§ããï¼ã2015 å¹´ã«ä¿®æ£ããã¾ããããã®ãã°ã®ãããã仿§æ¸ã§ã¯ç¹ã«æ³¨æãä¿ãã¦ããã¨ããäºå®ãããã¾ãã
ãã¿ã¼ã³ã¨ã¨ãã«
y
ãã©ã°ã使ç¨ãããå ´åã^
ã¯å¸¸ã«å ¥åã®å§ã¾ãã«ã®ã¿ä¸è´ããããï¼rer.[[Multiline]] ãtrue
ã®å ´åï¼è¡ã®å é ã«ä¸è´ãããã§ãã
以ä¸ã¯æ£ããæåã®ä¾ã§ãã
const regex = /^foo/y;
regex.lastIndex = 2;
regex.test("..foo"); // false - ã¤ã³ããã¯ã¹ 2 ã¯æååã®å
é ã§ã¯ãªã
const regex2 = /^foo/my;
regex2.lastIndex = 2;
regex2.test("..foo"); // false - ã¤ã³ããã¯ã¹ 2 ã¯æååã¾ãã¯è¡ã®å
é ã§ã¯ãªã
regex2.lastIndex = 2;
regex2.test(".\nfoo"); // true - ã¤ã³ããã¯ã¹ 2 ã¯è¡ã®å
é
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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