éè¯ä½äºåå项ä¹åï¼ç¨äºå°åå项éå¤ä¸å®æ¬¡æ°ãå®ä¸è½åç¬åºç°ãæ¯ä¸ªéè¯é½å¯ä»¥æå®ä¸ä¸ªæ¨¡å¼å¿ é¡»éå¤çæå°åæå¤§æ¬¡æ°ã
éè¯ æå°å¼ æå¤§å¼?
0 1 *
0 Infinity +
1 Infinity {count}
count
count
{min,}
min
Infinity {min,max}
min
max
å¯¹äº {count}
ã{min,}
å {min,max}
è¯æ³ï¼æ°åå¨å´ä¸è½æç©ºæ ¼ï¼å¦åå°±ä¼åæåé¢å符模å¼ã
const re = /a{1, 3}/;
re.test("aa"); // false
re.test("a{1, 3}"); // true
è¿ç§è¡ä¸ºå¨ Unicode æç¥æ¨¡å¼ä¸å¾å°äºä¿®æ£ï¼å¨è¿ç§æ¨¡å¼ä¸ï¼å¦æä¸ä½¿ç¨è½¬ä¹è¯æ³ï¼å°±ä¸è½æå颿æä½¿ç¨å¤§æ¬å·ãå¨ä¸ä½¿ç¨è½¬ä¹çæ
åµä¸æå颿æä½¿ç¨ {
å }
çç¹æ§æ¯ä¸ç§ä¸ºä¸ web å
¼å®¹èåºå¼çè¯æ³ï¼ä¸åºä¾èµè¿ç§ç¹æ§ã
/a{1, 3}/u; // SyntaxError: Invalid regular expression: Incomplete quantifier
妿æå°å¼å¤§äºæå¤§å¼ï¼ä¼äº§çè¯æ³é误ã
/a{3,2}/; // SyntaxError: Invalid regular expression: numbers out of order in {} quantifier
éè¯å¯å¯¼è´æè·ç»å¤æ¬¡å¹é ãæå ³è¿ç§æ åµä¸çè¡ä¸ºçæ´å¤ä¿¡æ¯ï¼è¯·åé æè·ç»é¡µé¢ã
æ¯æ¬¡éå¤å¹é çå符串ä¸å¿ ç¸åã
/[ab]*/.exec("aba"); // ['aba']
é»è®¤æ
åµä¸ï¼éè¯æ¯è´ªå©ªçï¼è¿æå³çå®ä»¬ä¼å°è¯å°½å¯è½å¤å°å¹é
ï¼ç´å°è¾¾å°æå¤§å¼ææ æ³ç»§ç»å¹é
为æ¢ãä½ å¯ä»¥å¨éè¯å颿·»å ?
ï¼ä½¿å
¶æä¸ºé贪婪éè¯ãå¨è¿ç§æ
åµä¸ï¼éè¯ä¼å°½éåå°å¹é
次æ°ï¼åªæå½éå¤å¹é
次æ°è¾¾å°ä¸å¯è½å¹é
å°æ¨¡å¼çå
¶ä½é¨åæ¶ï¼æä¼å¢å å¹é
次æ°ã
/a*/.exec("aaa"); // ['aaa']ï¼æ´ä¸ªè¾å
¥è¢«æ¶è
/a*?/.exec("aaa"); // ['']ï¼å¯ä»¥ä¸æ¶èä»»ä½å符ï¼ä½ä»è½æåå¹é
/^a*?$/.exec("aaa"); // ['aaa']ï¼ä¸å¯è½æ¶èæ´å°çå符èä»ç¶å¹é
æå
ä¸è¿ï¼åªè¦æ£å表达å¼å¨æä¸ªç´¢å¼å¤æåå¹é å符串ï¼å°±ä¸ä¼åå°è¯åç»ç´¢å¼ï¼å°½ç®¡è¿å¯è½ä¼å¯¼è´æ¶èæ´å°çå符ã
/a*?$/.exec("aaa"); // ['aaa']ï¼å¨ç¬¬ä¸ä¸ªå符å¤å·²ç»å¹é
æåï¼å æ¤è¯¥æ£å表达å¼ä¸ä¼å°è¯ä»ç¬¬äºä¸ªå符å¤å¼å§å¹é
å¦ææ æ³ä¸æ¨¡å¼çå ¶ä½é¨åå¹é ï¼è´ªå©ªéè¯å¯è½ä¼å°è¯è¾å°çéå¤ã
/[ab]+[abc]c/.exec("abbc"); // ['abbc']
卿¬ä¾ä¸ï¼[ab]+
é¦å
贪婪å°å¹é
äº "abb"
ï¼ä½ [abc]c
æ æ³å¹é
模å¼çå
¶ä½é¨åï¼"c"
ï¼ï¼å æ¤éè¯è¢«ç®å为åªå¹é
"ab"
ã
贪婪çéå符é¿å
å¹é
æ éå¤ç空å符串ã妿å¹é
çå符æ°è¾¾å°æå°å¼ï¼ä¸ååå¨è¯¥ä½ç½®ä¸åæ¶èæ´å¤å符ï¼é£ä¹éåå¨å°±ä¼åæ¢å¹é
ãè¿å°±æ¯ä¸ºä»ä¹ /(a*)*/.exec("b")
ä¸ä¼å¯¼è´æ é循ç¯ã
贪婪çéè¯ä¼å°½å¯è½å¤å°å¹é
ï¼èä¸ä¼æå¤§åå¹é
çé¿åº¦ãä¾å¦ï¼/(aa|aabaac|ba)*/.exec("aabaac")
å
å¹é
"aa"
ï¼ç¶åå¹é
"ba"
è䏿¯ "aabaac"
ã
éè¯éç¨äºå个ååã妿è¦å¯¹è¾é¿çæ¨¡å¼æéæ©è¡¨è¾¾å¼è¿è¡éåï¼å¿ é¡»å¯¹å ¶è¿è¡åç»ãéè¯ä¸è½ç¨äºæè¨ã
/^*/; // SyntaxError: Invalid regular expression: nothing to repeat
å¨ Unicode æç¥æ¨¡å¼ä¸ï¼ååæè¨å¯ä»¥éåãè¿æ¯ä¸ç§ä¸ºå ¼å®¹ web èè¿æ¶çè¯æ³ï¼ä¸åºä¾èµå®ã
/(?=a)?b/.test("b"); // trueï¼ååå¹é
äºé¶æ¬¡
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