Baseline Widely available
sticky
屿§åæ äºæç´¢æ¯å¦å
·æç²æ§ï¼ä»
仿£å表达å¼ç lastIndex
屿§è¡¨ç¤ºçç´¢å¼å¤æç´¢ï¼ãsticky
æ¯æ£å表达å¼å¯¹è±¡çåªè¯»å±æ§ã
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
å¯å å¦ å¯æä¸¾ å¦ å¯é
ç½® æ¯ æè¿°
sticky
ç弿¯ Boolean
ï¼å¹¶å¨ y
æ å¿ä½¿ç¨æ¶ä¸ºç; å¦å为åãy
æ å¿æç¤ºï¼ä»
仿£å表达å¼ç lastIndex
屿§è¡¨ç¤ºçç´¢å¼å¤ä¸ºç®æ å符串å¹é
ï¼å¹¶ä¸ä¸ä¼å°è¯ä»åç»ç´¢å¼å¹é
ï¼ã妿ä¸ä¸ªè¡¨è¾¾å¼åæ¶æå®äº sticky
å global
ï¼å
¶å°ä¼å¿½ç¥ global
æ å¿ã
ä½ ä¸è½ç´æ¥æ´æ¹è¿ä¸ªå±æ§ï¼å®æ¯åªè¯»çã
ç¤ºä¾ ä½¿ç¨å¸¦ sticky æ å¿çæ£å表达å¼var str = "#foo#";
var regex = /foo/y;
regex.lastIndex = 1;
regex.test(str); // trueï¼è¯æ³¨ï¼æ¤ä¾ä»
å½ lastIndex = 1 æ¶å¹é
æåï¼è¿å°±æ¯ sticky çä½ç¨ï¼
regex.lastIndex = 5;
regex.test(str); // falseï¼lastIndex 被 sticky æ å¿èèå°ï¼ä»è导è´å¹é
失败ï¼
regex.lastIndex; // 0ï¼å¹é
失败åéç½®ï¼
éå®ç sticky æ å¿
ç«çç SpiderMonkey 弿çå ä¸ªçæ¬æä¸ä¸ª bugï¼å¤ç ^
æè¨å sticky æ å¿æ¶ï¼ä¼å
许使ç¨äº sticky æ å¿ç表达å¼ä» ^
æè¨å¼å§å¹é
ï¼è¿æ¯ä¸å¯¹çãè¿ä¸ª bug æ¯å¨ Firefox 3.6 ä¹åçæä¸ªçæ¬å¼å
¥çï¼which had the sticky flag but not the bugï¼å¹¶äº 2015 å¹´ä¿®å¤ãå¯è½æ£å 为è¿ä¸ª bugï¼ES2015 è§è ç¹å«æåºï¼
å½ä½¿ç¨å¸¦æ
y
æ è¯çå¹é æ¨¡å¼æ¶ï¼^ æè¨æ»æ¯ä¼å¹é è¾å ¥çå¼å§ä½ç½®æè ï¼å¦ææ¯å¤è¡æ¨¡å¼ï¼æ¯ä¸è¡çå¼å§ä½ç½®ã
æ£ç¡®è¡ä¸ºç示ä¾ï¼
var regex = /^foo/y;
regex.lastIndex = 2;
regex.test("..foo"); // false - ç´¢å¼ 2 䏿¯å符串çå¼å§
var 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