å 容
- ã¯ããã«
- å€ãã¿ã€ããããã³æŒç®å
- ããã°ã©ã æ§æ
- æ©èœ
- ããŒã¿æ§é ïŒãªããžã§ã¯ããšé å
- é«éé¢æ°
- ãªããžã§ã¯ãã®ç§å¯ã®ç掻
- ãããžã§ã¯ãïŒé»åç掻
- æ€çŽ¢ãšãšã©ãŒåŠç
- æ£èŠè¡šçŸ
- ã¢ãžã¥ãŒã«
- ãããžã§ã¯ãïŒããã°ã©ãã³ã°èšèª
- JavaScriptãšãã©ãŠã¶ãŒ
- ããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«
- ã€ãã³ãåŠç
- ãããžã§ã¯ãïŒãã©ãããã©ãŒã ã²ãŒã
- ãã£ã³ãã¹ã«æã
- HTTP
- ãã©ãŒã ãšãã©ãŒã ãã£ãŒã«ã
- ãããžã§ã¯ãïŒãã€ã³ã
- Node.js
- ãããžã§ã¯ãïŒçµéšå ±æãŠã§ããµã€ã
- ã³ãŒãã®ãµã³ãããã¯ã¹
åé¡ã«çŽé¢ãã人ã®äžã«ã¯ãããããã§ãæ£èŠè¡šçŸã䜿ã£ãŠããããšæã人ãããŸãã çŸåšã2ã€ã®åé¡ããããŸãã
ãžã§ã€ããŒã»ã¶ãŠã£ã³ã¹ããŒ
ãŠã¢ã³ã»ãã¯ã次ã®ããã«è¿°ã¹ãŠããŸãã åé¡ã®æ§é å šäœãããã°ã©ã ããã«ã¯å€ãã®ã³ãŒããå¿ èŠã§ãã
ãã¹ã¿ãŒãŠã¢ã³ããŒããããã°ã©ãã³ã°ããã¯ã
ããã°ã©ãã³ã°ããŒã«ãšããã°ã©ãã³ã°ãã¯ããã¯ã¯ãç¡ç§©åºã«é²åãç¶ããŸãã çãæ®ãã®ã¯çŸãããŠç¬åµçã§ã¯ãªãå ŽåããããŸãããããšãã°ãä»ã®æåãããã¯ãããžãŒã«çµ±åãããŠããå Žåãªã©ããã®åéã§éåžžã«ããŸãæ©èœããŠãã人ã ãã§ãã
ãã®ç« ã§ã¯ããã®ãããªããŒã«-æ£èŠè¡šçŸã«ã€ããŠèª¬æããŸãã ããã¯ãæååããŒã¿ã®ãã¿ãŒã³ãèšè¿°ããæ¹æ³ã§ãã JavaScriptãä»ã®å€ãã®èšèªãšããŒã«ã«å«ãŸããå°ããªå¥åã®èšèªãäœæããŸãã
ã¬ã®ã¥ã©ãŒã¯åæã«éåžžã«å¥åŠã§éåžžã«äŸ¿å©ã§ãã ãããã®æ§æã¯äžå¯è§£ã§ãããJavaScriptã®ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã¯æ±ãã«ããã§ãã ããããæååãæ¢çŽ¢ããã³åŠçããããã®åŒ·åãªããŒã«ã§ãã ãããã«å¯ŸåŠãããšãããå¹æçãªããã°ã©ããŒã«ãªããŸãã
æ£èŠè¡šçŸãäœæãã
Regularã¯ãªããžã§ã¯ãã®ã¿ã€ãã§ãã RegExpã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãããã¹ã©ãã·ã¥ã§å²ãŸããç®çã®ãã³ãã¬ãŒããèšè¿°ããããšã§äœæã§ããŸãã
var re1 = new RegExp("abc"); var re2 = /abc/;
ãããã®æ£èŠè¡šçŸã¯ã©ã¡ãã1ã€ã®ãã¿ãŒã³ãè¡šããŸããæåãaããæåãbããæåãcãã®é ã«ãªããŸãã
RegExpã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããå Žåããã³ãã¬ãŒãã¯éåžžã®æååãšããŠæžã蟌ãŸãããããããã¯ã¹ã©ãã·ã¥ã«é¢ãããã¹ãŠã®èŠåãé©çšãããŸãã
ãã¿ãŒã³ãã¹ã©ãã·ã¥ã®éã«ãã2çªç®ã®ãšã³ããªã¯ãããã¯ã¹ã©ãã·ã¥ãç°ãªãæ¹æ³ã§åŠçããŸãã ãŸãããã¿ãŒã³ã¯ã¹ã©ãã·ã¥ã§çµããããããã¿ãŒã³ã®åã«å«ããã¹ã©ãã·ã¥ã®åã«ããã¯ã¹ã©ãã·ã¥ã眮ãå¿ èŠããããŸãã ããã«ã\ nã®ãããªç¹æ®æåã®äžéšã§ã¯ãªãããã¯ã¹ã©ãã·ã¥ã¯ä¿åããïŒè¡ã®ããã«ç¡èŠãããŸããïŒããã¿ãŒã³ã®æå³ãå€æŽããŸãã çå笊ããã©ã¹ãªã©ã®äžéšã®æåã¯ãæ£èŠè¡šçŸã§ã¯ç¹å¥ãªæå³ãæã¡ããã®ãããªæåãèŠã€ããå¿ èŠãããå Žåã¯ãããã¯ã¹ã©ãã·ã¥ãåã«ä»ããå¿ èŠããããŸãã
var eighteenPlus = /eighteen\+/;
ã©ã®æåã®åã«ã¹ã©ãã·ã¥ãä»ããå¿ èŠãããããç¥ãã«ã¯ãã¬ã®ã¥ã©ãŒã®ãã¹ãŠã®ç¹æ®æåã®ãªã¹ããåŠç¿ããå¿ èŠããããŸãã ããã¯éçŸå®çã§ãããçãããå Žåã¯ãæåãæ°åãã¹ããŒã¹ä»¥å€ã®æåã®åã«ããã¯ã¹ã©ãã·ã¥ã眮ãã ãã§ãã
äžèŽã確èªãã
ã¬ã®ã¥ã©ãŒã«ã¯ããã€ãã®æ¹æ³ããããŸãã æãç°¡åãªã®ã¯ãã¹ãã§ãã æååãæž¡ããšãæå®ããããã¿ãŒã³ã®åºçŸãæååã«å«ãŸããŠãããã©ããã瀺ãããŒã«å€ãè¿ãããŸãã
console.log(/abc/.test("abcde")); // â true console.log(/abc/.test("abxde")); // â false
éç¹æ®æåã®ã¿ã§æ§æãããèŠåæ§ã¯ãåã«ãããã®æåã®ã·ãŒã±ã³ã¹ã§ãã abcããã§ãã¯ããŠããè¡ã®ã©ããã«ããå ŽåïŒæåã ãã§ãªãïŒãtestã¯trueãè¿ããŸãã
æåã»ãããæ¢ããŠããŸã
æååã«abcãå«ãŸããŠãããã©ããã調ã¹ãã«ã¯ãindexOfã䜿çšããããšãã§ããŸãã ã¬ã®ã¥ã©ãŒã䜿çšãããšãããã«é²ãã§ããè€éãªãã¿ãŒã³ãäœæã§ããŸãã
ä»»æã®æ°ãèŠã€ããå¿ èŠããããšããŸãã ã¬ã®ã¥ã©ãŒã·ãŒãºã³ã«æåã»ãããè§ãã£ãã«å ¥ãããšãããã¯åŒã®ãã®éšåãè§ãã£ãå ã®æåã®ããããã«äžèŽããããšãæå³ããŸãã
äž¡æ¹ã®åŒã¯ãæ°åãå«ãè¡ã«ãããŸãã
console.log(/[0123456789]/.test("in 1992")); // â true console.log(/[0-9]/.test("in 1992")); // â true
è§æ¬åŒ§å ã§ã¯ã2æåéã®ããã·ã¥ã䜿çšããŠãUnicodeã§ã·ãŒã±ã³ã¹ãæå®ãããŠããæåã®ç¯å²ãæå®ããŸãã 0ãã9ã®æåãäžåã«äžŠãã§ããïŒ48ãã57ã®ã³ãŒãïŒããã[0-9]ã¯ãã¹ãŠããã£ããã£ããä»»æã®æ°åãšäžèŽããŸãã
æåã®ããã€ãã®ã°ã«ãŒãã«ã¯ãç¬èªã®çµã¿èŸŒã¿ç¥èªããããŸãã
\ dä»»æã®æ°å
\ wè±æ°å
\ s空çœïŒã¹ããŒã¹ãã¿ããæ¹è¡ãªã©ïŒ
\ Dã¯æ°åã§ã¯ãããŸãã
\ Wã¯è±æ°åã§ã¯ãããŸãã
\ Sã¯ç©ºçœã§ã¯ãããŸãã
ã æ¹è¡ä»¥å€ã®ä»»æã®æå
ãããã£ãŠã次ã®åŒã䜿çšããŠã2003-01-01 15:20ã®ãããªæ¥ä»ãšæå»ã®åœ¢åŒãèšå®ã§ããŸãã
var dateTime = /\d\d-\d\d-\d\d\d\d \d\d:\d\d/; console.log(dateTime.test("30-01-2003 15:20")); // â true console.log(dateTime.test("30-jan-2003 15:20")); // â false
ã²ã©ãã§ããã ããã¯ã¹ã©ãã·ã¥ãå€ããããšããã¿ãŒã³ã®ç解ãå°é£ã«ãªããŸãã åŸã§å°ãæ¹åããŸãã
ããã¯ã¹ã©ãã·ã¥ã¯è§æ¬åŒ§ã§ã䜿çšã§ããŸãã ããšãã°ã[\ dã]ã¯æ°åãŸãã¯ããªãªããæå³ããŸãã è§æ¬åŒ§å ã®ãããã¯ç¹å¥ãªæå³ã倱ããåãªããããã«å€ããããšã«æ³šæããŠãã ããã +ãªã©ãä»ã®ç¹æ®æåã«ã€ããŠãåãããšãèšããŸãã
æåã»ãããå転ããããšãã§ããŸã-ã€ãŸããã»ããå ã®æå以å€ã®æåãèŠã€ããå¿ èŠããããšããããšã§ã-éå§è§æ¬åŒ§ã®çŽåŸã«^èšå·ã眮ãããšã«ãã£ãŠã
var notBinary = /[^01]/; console.log(notBinary.test("1100100010100110")); // â false console.log(notBinary.test("1100100010200110")); // â true
ãã³ãã¬ãŒãã®äžéšãç¹°ãè¿ããŸã
1ã€ã®çªå·ãèŠã€ããæ¹æ³ãç¥ã£ãŠããŸãã ãããŠãæŽæ°ãèŠã€ããå¿ èŠãããå Žå-1æ¡ä»¥äžã®æ°åã®ã·ãŒã±ã³ã¹ïŒ
ã¬ã®ã¥ã©ãŒã·ãŒãºã³ã§äœãã®åŸã«+èšå·ãä»ãããšããã®èŠçŽ ãè€æ°åç¹°ãè¿ãããšãã§ããŸãã / \ d + /ã¯ã1æ¡ä»¥äžã®æ°åãæå³ããŸãã
console.log(/'\d+'/.test("'123'")); // â true console.log(/'\d+'/.test("''")); // â false console.log(/'\d*'/.test("'123'")); // â true console.log(/'\d*'/.test("''")); // â true
ã¢ã¹ã¿ãªã¹ã¯*ã®å€ã¯ã»ãŒåãã§ããããã¿ãŒã³ããŒãå衚瀺ã§ããŸãã äœãã®åŸã«ã¢ã¹ã¿ãªã¹ã¯ãä»ããŠããå Žåããã®è¡ã«ãã³ãã¬ãŒããååšããããšã劚ããããšã¯ãããŸããããŒãåã ãååšããŸãã
çå笊ã¯ããã³ãã¬ãŒãã®äžéšããªãã·ã§ã³ã«ããŸããã€ãŸãããŒããŸãã¯1ååºçŸããŸãã 次ã®äŸã§ã¯ãuèšå·ãçºçããå ŽåããããŸããããã¿ãŒã³ã¯ååšããªãå Žåã«ãäžèŽããŸãã
var neighbor = /neighbou?r/; console.log(neighbor.test("neighbour")); // â true console.log(neighbor.test("neighbor")); // â true
ãã¿ãŒã³ãçºçããæ£ç¢ºãªåæ°ãæå®ããã«ã¯ãäžæ¬åŒ§ã䜿çšããŸãã èŠçŽ ã®åŸã®{4}ã¯ãè¡ã«4ååºçŸããå¿ èŠãããããšãæå³ããŸãã ééãèšå®ããããšãã§ããŸãã{2,4}ã¯ãèŠçŽ ã2å以äž4å以äžãæºããå¿ èŠãããããšãæå³ããŸãã
1æ¡ãŸãã¯2æ¡ã®æ¥ãæãããã³æéãèš±å¯ããå¥ã®ããŒãžã§ã³ã®æ¥æ圢åŒã ãããŠåœŒå¥³ã¯ããå°ãèªã¿ãããã§ãã
var dateTime = /\d{1,2}-\d{1,2}-\d{4} \d{1,2}:\d{2}/; console.log(dateTime.test("30-1-2003 8:45")); // â true
æ°å€ã®1ã€ãçç¥ããããšã«ããããªãŒãã³ãšã³ãã®ã£ããã䜿çšã§ããŸãã {ã5}ã¯ããã¿ãŒã³ã0ã5åçºçããããšãæå³ãã{5ã}-5å以äžçºçããããšãæå³ããŸãã
éšååŒã®ã°ã«ãŒãå
è€æ°ã®èŠçŽ ã§*ãŸãã¯+æŒç®åãäžåºŠã«äœ¿çšããã«ã¯ãæ¬åŒ§ã䜿çšã§ããŸãã æ¬åŒ§ã§å²ãŸããèŠåæ§ã®éšåã¯ãæŒç®åã®èŠ³ç¹ãã1ã€ã®èŠçŽ ãšèŠãªãããŸãã
var cartoonCrying = /boo+(hoo+)+/i; console.log(cartoonCrying.test("Boohoooohoohooo")); // â true
æåãš2çªç®ã®ãã©ã¹ã¯ãbooãšhooã®2çªç®ã®æåoã«ã®ã¿é©çšãããŸãã 3çªç®ã®+ã¯ã°ã«ãŒãå šäœã«å±ãïŒhoo +ïŒããããã®ã·ãŒã±ã³ã¹ã®1ã€ä»¥äžãèŠã€ããŸãã
åŒã®æåŸã«ããæåiã¯ãéåžžã®å€§æåãšå°æåãåºå¥ããªããããBã¯bãšäžèŽããŸãã
ããããšã°ã«ãŒã
ãã¹ãæ¹æ³ã¯ãå®æçã«ãã§ãã¯ããæãç°¡åãªæ¹æ³ã§ãã äžèŽãèŠã€ãã£ããã©ããã®ã¿ãå ±åããŸãã ã¬ã®ã¥ã©ãŒã«ã¯execã¡ãœããããããŸããäœãèŠã€ãããªãã£ãå Žåã¯nullãè¿ããŸãããã以å€ã®å Žåã¯ãäžèŽã«é¢ããæ å ±ãå«ããªããžã§ã¯ããè¿ããŸãã
var match = /\d+/.exec("one two 100"); console.log(match); // â ["100"] console.log(match.index); // â 8
è¿ãããexecãªããžã§ã¯ãã«ã¯ãäžèŽãçºçããæåã®çªå·ãå«ãã€ã³ããã¯ã¹ããããã£ããããŸãã äžè¬ã«ããªããžã§ã¯ãã¯æååã®é åã®ããã«èŠããŸããæåã®èŠçŽ ã¯ãäžèŽããã§ãã¯ããæååã§ãã ãã®äŸã§ã¯ãããã¯æ¢ããŠããäžé£ã®æ°åã«ãªããŸãã
æååã«ã¯ãã»ãŒåãæ¹æ³ã§æ©èœããäžèŽã¡ãœããããããŸãã
console.log("one two 100".match(/\d+/)); // â ["100"]
æ¬åŒ§ã§ã°ã«ãŒãåãããéšååŒãæ£èŠè¡šçŸã«å«ãŸããŠããå Žåããããã®ã°ã«ãŒãã«äžèŽããããã¹ããé åã«è¡šç€ºãããŸãã æåã®èŠçŽ ã¯åžžã«å®å šã«äžèŽããŸãã 2çªç®ã¯ãæåã®ã°ã«ãŒãïŒãã£ããä»ã®å šå¡ãããå ã«åºäŒã£ãã°ã«ãŒãïŒã次ã«2çªç®ã®ã°ã«ãŒããªã©ãšäžèŽããéšåã§ãã
var quotedText = /'([^']*)'/; console.log(quotedText.exec("she said 'hello'")); // â ["'hello'", "hello"]
ã°ã«ãŒãããŸã£ããèŠã€ãããªãå ŽåïŒããšãã°ãåŸãã«çå笊ãããå ŽåïŒãé åå ã®ãã®äœçœ®ã«ã¯undefinedãå«ãŸããŸãã ã°ã«ãŒããè€æ°åäžèŽããå ŽåãæåŸã®äžèŽã®ã¿ãé åã«å«ãŸããŸãã
console.log(/bad(ly)?/.exec("bad")); // â ["bad", undefined] console.log(/(\d)+/.exec("123")); // â ["123", "3"]
ã°ã«ãŒãã¯ãæååã®äžéšãæœåºããã®ã«åœ¹ç«ã¡ãŸãã æååã«æ¥ä»ããããã©ããã確èªããã ãã§ãªããæœåºããŠãªããžã§ã¯ããè¡šãæ¥ä»ãäœæããå¿ èŠãããå Žåã¯ãæ°åã®ã·ãŒã±ã³ã¹ãæ¬åŒ§ã§å²ã¿ãexecã®çµæããæ¥ä»ãéžæã§ããŸãã
ããããæå§ãã«ãJavaScriptã§æ¥ä»ãšæå»ãä¿åãã奜ãŸããæ¹æ³ãåŠã¶å°ããªäœè«ã
æ¥ä»ã¿ã€ã
JavaScriptã«ã¯ãæ¥ä»çšã®æšæºãªããžã§ã¯ãã¿ã€ãããããŸãã æ¥ä»ãšåŒã°ããŸãã newãä»ããŠæ¥ä»ãªããžã§ã¯ããäœæããã ãã®å ŽåãçŸåšã®æ¥ä»ãšã¬ããŒãååŸããŸãã
console.log(new Date()); // â Sun Nov 09 2014 00:07:57 GMT+0300 (CET)
ç¹å®ã®æéãå«ããªããžã§ã¯ããäœæããããšãã§ããŸãã
console.log(new Date(2015, 9, 21)); // â Wed Oct 21 2015 00:00:00 GMT+0300 (CET) console.log(new Date(2009, 11, 9, 12, 59, 59, 999)); // â Wed Dec 09 2009 12:59:59 GMT+0300 (CET)
JavaScriptã¯ãæçªå·ããŒãããå§ãŸããæ¥çªå·ã1ããå§ãŸããšããèŠåã䜿çšããŸãã ããã¯ã°ãããŠã°ãããŠããŸãã æ°ãã€ããŠã
æåŸã®4ã€ã®åŒæ°ïŒæéãåãç§ãããªç§ïŒã¯ãªãã·ã§ã³ã§ããããŒãã«çãããªãå Žåã
ã¿ã€ã ã¹ã¿ã³ãã¯ã1970幎ã®åãããçµéããããªç§æ°ãšããŠä¿åãããŸãã è² ã®æ°å€ã¯1970幎ãŸã§äœ¿çšãããŸãïŒããã¯ããã®é ã«äœæãããUnixã®æéå¥çŽã«ãããã®ã§ãïŒã æ¥ä»ãªããžã§ã¯ãã®getTimeã¡ãœããã¯ããã®æ°å€ãè¿ããŸãã èªç¶ã«å€§ããã§ãã
console.log(new Date(2013, 11, 19).getTime()); // â 1387407600000 console.log(new Date(1387407600000)); // â Thu Dec 19 2013 00:00:00 GMT+0100 (CET)
Dateã³ã³ã¹ãã©ã¯ã¿ãŒã«1ã€ã®åŒæ°ãæå®ãããšãããªç§æ°ãšããŠæ±ãããŸãã Dateãªããžã§ã¯ããäœæããŠgetTimeã¡ãœãããåŒã³åºãããDate.nowé¢æ°ãåŒã³åºãããšã«ãããããªç§ã®çŸåšã®å€ãååŸã§ããŸãã
Dateãªããžã§ã¯ãã«ã¯ãã³ã³ããŒãã³ããååŸããããã®getFullYearãgetMonthãgetDateãgetHoursãgetMinutesãããã³getSecondsã¡ãœããããããŸãã ãŸãã93ã14ãªã©ãããªã圹ã«ç«ããªã2æ¡ã®ã³ãŒããè¿ãgetYearã¡ãœããããããŸãã
ãã³ãã¬ãŒãã®å¿ èŠãªéšåãæ¬åŒ§ã§å²ãã ã®ã§ãæååããçŽæ¥æ¥ä»ãªããžã§ã¯ããäœæã§ããŸãã
function findDate(string) { var dateTime = /(\d{1,2})-(\d{1,2})-(\d{4})/; var match = dateTime.exec(string); return new Date(Number(match[3]), Number(match[2]) - 1, Number(match[1])); } console.log(findDate("30-1-2003")); // â Thu Jan 30 2003 00:00:00 GMT+0100 (CET)
åèªãšè¡ã®å¢çç·
æ®å¿µãªãããfindDateã¯æååã100-1-30000ãããç¡æå³ãªæ¥ä»00-1-3000ãåãã§ååŸããŸãã äžèŽã¯è¡ã®ã©ãã§ãçºçããå¯èœæ§ãããããããã®å Žåã¯2çªç®ã®æåã§å§ãŸããæåŸãã2çªç®ã®æåã§çµäºããŸãã
æååå šäœãååŸããããã«äžèŽã匷å¶ããå¿ èŠãããå Žåã¯ã^ããã³$ã©ãã«ã䜿çšããŸãã ^ã¯è¡ã®å é ã«äžèŽãã$ã¯æ«å°Ÿã«äžèŽããŸãã ãããã£ãŠã/ ^ \ d + $ /ã¯1æ¡ãŸãã¯è€æ°ã®æ°åã®ã¿ã§æ§æãããè¡ã«äžèŽãã/ ^ïŒ/æå笊ã§å§ãŸãè¡ã«äžèŽãã/ x ^ /ã¯ã©ã®è¡ã«ãäžèŽããŸããïŒè¡ã®å é ããåã«xïŒã
äžæ¹ãæ¥ä»ãåèªã®å¢çã§éå§ããã³çµäºããããšã確èªããå¿ èŠãããå Žåã¯ã\ bã©ãã«ã䜿çšããŸãã åèªã®å¢çã¯ãè¡ã®å é ãŸãã¯æ«å°ŸããŸãã¯è±æ°å\ wãäžæ¹ã®åŽã«ãããããäžæ¹ã®åŽã«è±æ°åã§ã¯ãªãè¡ã®ä»»æã®å Žæã«ãªããŸãã
console.log(/cat/.test("concatenate")); // â true console.log(/\bcat\b/.test("concatenate")); // â false
å¢çã©ãã«ã¯ã·ã³ãã«ã§ã¯ãªãããšã«æ³šæããŠãã ããã ããã¯åãªãå¶éã§ãããç¹å®ã®æ¡ä»¶ãæºããããå Žåã«ã®ã¿äžèŽããããšãæå³ããŸãã
éžæãã³ãã¬ãŒã
ããã¹ãã«æ°åã ãã§ãªããæ°åã®åŸã«åæ°åœ¢ãŸãã¯è€æ°åœ¢ã®è±ãçããŸãã¯é¶ãç¶ããã©ããã調ã¹ãå¿ èŠããããšããŸãã
3ã€ã®åžžé£ãæžããŠé çªã«ãã§ãã¯ããããšãã§ããŸããããã£ãšè¯ãæ¹æ³ããããŸãã ã·ã³ãã«| ãã³ãã¬ãŒãã®å·ŠåŽãšå³åŽã®éžæè¢ã瀺ããŸãã ãããŠãç§ãã¡ã¯æ¬¡ã®ããã«èšãããšãã§ããŸãïŒ
var animalCount = /\b\d+ (pig|cow|chicken)s?\b/; console.log(animalCount.test("15 pigs")); // â true console.log(animalCount.test("15 pigchickens")); // â false
æ¬åŒ§ã¯ã|ãé©çšããããã¿ãŒã³ã®éšåãå¶éããŸãããããã®æŒç®åã®å€ãã次ã ã«é 眮ããŠã3ã€ä»¥äžã®ãªãã·ã§ã³ã®éžæã瀺ãããšãã§ããŸãã
æ€çŽ¢ãšã³ãžã³
æ£èŠè¡šçŸã¯ãããŒãã£ãŒããšèããããšãã§ããŸãã 次ã®å³ã¯ãææ°ã®å®¶çã®äŸã瀺ããŠããŸãã
å³ã®å·ŠåŽããå³åŽãžã®ãã¹ãèŠã€ãã£ãå ŽåãåŒã¯æååãšäžèŽããŸãã è¡å ã®çŸåšã®äœçœ®ãèšæ¶ããåè§åœ¢ãééãããã³ã«ããã®äœçœ®ã®çŽåŸã®è¡ã®éšåãåè§åœ¢ã®å 容ãšäžèŽããããšã確èªããŸãã
ãã®ããããããŒãã£ãŒããééãããšãã«ã3ã€ã®è±ãã®è¡ã§å®æçã«äžèŽãããã®ã確èªããããšã¯æ¬¡ã®ããã«ãªããŸãã
-äœçœ®4ã«ã¯åèªã®å¢çããããæåã®é·æ¹åœ¢ãæž¡ããŸã
-4çªç®ã®äœçœ®ããæ°ãèŠã€ãã2çªç®ã®é·æ¹åœ¢ãééããŸã
-äœçœ®5ã§ã1ã€ã®ãã¹ã¯2çªç®ã®é·æ¹åœ¢ã®åã§éãã2çªç®ã®ãã¹ã¯ããã«ã¹ããŒã¹ã空ããŠé·æ¹åœ¢ã«é²ã¿ãŸãã æ°åã§ã¯ãªãã¹ããŒã¹ãããã2çªç®ã®æ¹æ³ãéžæããŸãã
-ä»ãç§ãã¡ã¯äœçœ®6ã«ããããè±ãã®å§ãŸãã§ããããã¹ã®äžéåå²ã«ãããŸãã è¡ã«ãçãããé¶ãã¯ãããŸãããããè±ãã¯ååšããããããã®ãã¹ãéžæããŸãã
-äžéåå²åŸã®äœçœ®9ã§ã1ã€ã®ãã¹ããsãã®åšããåããåèªå¢çãæã€æåŸã®é·æ¹åœ¢ã«é²ã¿ã2çªç®ã®ãã¹ããsããéããŸãã ãsããããã®ã§ãããã«è¡ããŸãã
-äœçœ®10ã§ã¯ãè¡ã®çµããã«ãããåèªã®å¢çã®ã¿ãäžèŽããŸãã è¡ã®çµããã¯å¢çãšèŠãªãããæåŸã®é·æ¹åœ¢ãééããŸãã ãããŠããã³ãã¬ãŒããèŠã€ããŸããã
åºæ¬çã«ãæ£èŠè¡šçŸã¯æ¬¡ã®ããã«æ©èœããŸããã¢ã«ãŽãªãºã ã¯è¡ã®å é ããéå§ãããããã§äžèŽãããã®ãèŠã€ããããšããŸãã ç§ãã¡ã®å Žåãããã«ã¯åèªã®å¢çãããã®ã§ãæåã®é·æ¹åœ¢ãééããŸã-ããããããã«ã¯æ°åããããŸããã®ã§ã2çªç®ã®é·æ¹åœ¢ã§ã€ãŸãããŸãã 次ã«ã圌ã¯è¡ã®2çªç®ã®æåã«ç§»åããããã§äžèŽãããã®ãèŠã€ããããšããŸã...ãªã©ãäžèŽãããã®ãèŠã€ããããè¡ã®çµããã«éãããŸã§ç¶ããŸãã
ããã¯ããã¯
èŠåæ§/ \ bïŒ[01] + b | \ d + | [\ da-f] hïŒ\ b /ã¯ãbãåŸã«ç¶ã2é²æ°ããµãã£ãã¯ã¹ã®ãªã10é²æ°ããŸãã¯16é²æ°ïŒ0ã 9ãŸãã¯æåaãhïŒã®åŸã«hãç¶ããŸãã 察å¿ãããã£ãŒãïŒ
äžèŽã®æ€çŽ¢ã§ã¯ãæååã«ãã®ãããªçªå·ããªãå Žåã§ããã¢ã«ãŽãªãºã ãäžäœãã¹ïŒ2é²æ°ïŒã«æ²¿ã£ãŠé²ãããšããããŸãã ããšãã°ãã103ããšããè¡ãããå Žåãçªå·3ã«å°éããŠåããŠã¢ââã«ãŽãªãºã ãééã£ããã¹äžã«ããããšãç解ããããšã¯æããã§ãã äžè¬ã«ãã©ã€ã³ã¯ã¬ã®ã¥ã©ãŒã·ãŒãºã³ãšäžèŽããŸããããã®ãã©ã³ãã§ã¯ãããŸããã
ãã®åŸãã¢ã«ãŽãªãºã ã¯ããŒã«ããã¯ããŸãã åå²ç¹ã§ã圌ã¯çŸåšã®äœçœ®ãèšæ¶ããŸãïŒãã®å Žåãããã¯åèªå¢çã®çŽåŸã®è¡ã®å é ã§ãïŒãéžæãããã¹ãæ©èœããªãå Žåã¯ãæ»ã£ãŠå¥ã®ãã¹ãè©Šãããšãã§ããŸãã è¡ã103ãã®å Žåãããªãã«ã«åºäŒã£ãåŸã圌ã¯æ»ãã10é²æ°ã®æ¹æ³ãè©Šã¿ãŸãã ããã¯æ©èœãããããäžèŽãããã®ãèŠã€ãããŸãã
ã¢ã«ãŽãªãºã ã¯ãå®å šã«äžèŽãããã®ãèŠã€ãããšããã«åæ¢ããŸãã ããã¯ãè€æ°ã®ãªãã·ã§ã³ã衚瀺ãããå Žåã§ãããã®ãã¡ã®1ã€ã ããïŒã¬ã®ã¥ã©ãŒã·ãŒãºã³ã§è¡šç€ºãããé åºã§ïŒäœ¿çšãããããšãæå³ããŸãã
+ã*ãªã©ã®ç¹°ãè¿ãæŒç®åã䜿çšãããšãããã¯ããã¯ãçºçããŸãã æååãabcxeãã§/^.*x/ãæ¢ããšãèŠåæ§ã®äžéš*è¡å šäœãåžåããããšããŸãã ã¢ã«ãŽãªãºã ã¯ããxããå¿ èŠã§ããããšãèªèããŸãã è¡ã®çµããã®åŸã«ãxãããªããããã¢ã«ãŽãªãºã ã¯1æåãããŒã«ããã¯ããŠäžèŽãèŠã€ããããšããŸãã abcxã®åŸãxãååšããªãããããµãã¹ããªã³ã°abcã«ãã§ã«ããŒã«ããã¯ãããŸãã ãããŠãè¡ã®åŸã圌ã¯xãèŠã€ããäœçœ®0ãã4ã§æåãããããã«ã€ããŠå ±åããŸãã
è€æ°ã®ããŒã«ããã¯ã«ã€ãªããå®æçãªã·ãŒãºã³ãæžãããšãã§ããŸãã ãã®åé¡ã¯ããã¿ãŒã³ãããŸããŸãªæ¹æ³ã§å ¥åãšäžèŽããå Žåã«çºçããŸãã ããšãã°ã2é²æ°ã®æ£èŠè¡šçŸãæžããšãã«ééããå Žåã誀ã£ãŠ/ïŒ[01] +ïŒ+ b /ã®ãããªãã®ãæžãå¯èœæ§ããããŸãã
ã¢ã«ãŽãªãºã ããæ«å°Ÿã«ãbããå«ãŸãªããŒããš1ã®é·ãæååã§ãã®ãããªãã¿ãŒã³ãæ€çŽ¢ããå Žåãæåã«æ°å€ããªããªããŸã§å éšã«ãŒããééããŸãã ãã®åŸã圌ã¯æåŸã«ãbãããªãããšã«æ°ã¥ãã§ãããã圌ã¯1ã€ã®äœçœ®ãããŒã«ããã¯ããå€åŽã®ã«ãŒããééããåã³ãããããå åŽã®ã«ãŒãã«æ²¿ã£ãŠãã1ã€ã®äœçœ®ãããŒã«ããã¯ããããšããŸã...ãããŠåœŒã¯äž¡æ¹ã®ã«ãŒãã䜿çšããŠãã®æ¹æ³ã§æ€çŽ¢ãç¶ããŸã ã€ãŸããæååã®åæåã®åŠçéã¯2åã«ãªããŸãã æ°å人ã®ãã£ã©ã¯ã¿ãŒã§ãããããããèŠã€ããã®ã«éåžžã«é·ãæéãããããŸãã
眮ææ¹æ³
è¡ã«ã¯ãæååã®äžéšãå¥ã®æååã§çœ®æã§ããreplaceã¡ãœããããããŸãã
console.log("".replace("", "")); // â
æåã®åŒæ°ã¯èŠåçã§ããå ŽåããããŸãããã®å Žåãæååå ã®æåã®æ£èŠè¡šçŸã眮ãæããããŸãã ãgãïŒã°ããŒãã«ããŠãããŒãµã«ïŒãªãã·ã§ã³ãã¬ã®ã¥ã©ãŒã«è¿œå ãããšãæåã®ãªã«ã¬ã³ã¹ã ãã§ãªãããã¹ãŠã®ãªã«ã¬ã³ã¹ã眮ãæããããŸã
console.log("Borobudur".replace(/[ou]/, "a")); // â Barobudur console.log("Borobudur".replace(/[ou]/g, "a")); // â Barabadar
ããã¹ãŠçœ®æããªãã·ã§ã³ãå¥ã®åŒæ°ãŸãã¯replaceAllåã®å¥ã®ã¡ãœããã«æž¡ãããšã¯çã«ããªã£ãŠããŸãã ããããæ®å¿µãªããããªãã·ã§ã³ã¯ã¬ã®ã¥ã©ãŒã·ãŒãºã³èªäœãééããŸãã
ã¬ã®ã¥ã©ãŒã·ãŒãºã³ã®æå®ãããè¡ã«ããã°ã«ãŒããžã®ãªã³ã¯ã䜿çšãããšãã¬ã®ã¥ã©ãŒã®ãã¹ãŠã®ãã¯ãŒãæããã«ãªããŸãã ããšãã°ããå§ãåãã®åœ¢åŒã§ã人ã®ååã1è¡ã«1ã€ãã€å«ãè¡ããããŸãã ãããã亀æããŠã³ã³ããåé€ããŠãå§ããååŸããå¿ èŠãããå Žåã¯ã次ã®ããã«èšè¿°ããŸãã
console.log( "Hopper, Grace\nMcCarthy, John\nRitchie, Dennis" .replace(/([\w ]+), ([\w ]+)/g, "$2 $1")); // â Grace Hopper // John McCarthy // Dennis Ritchie
眮æè¡ã®$ 1ããã³$ 2ã¯ãæ¬åŒ§ã§å²ãŸããæåã®ã°ã«ãŒããæããŸãã $ 1ã¯æåã®ã°ã«ãŒãã«äžèŽããããã¹ãã«ã$ 2ã¯2çªç®ã®ã°ã«ãŒãã«ã以äžåæ§ã«ãæ倧$ 9ã«çœ®æãããŸãã äžèŽå šäœã$ïŒå€æ°ã«å«ãŸããŠããŸãã
é¢æ°ã2çªç®ã®åŒæ°ãšããŠæž¡ãããšãã§ããŸãã 眮æããšã«ãé¢æ°ãåŒã³åºããããã®åŒæ°ãèŠã€ãã£ãã°ã«ãŒãïŒããã³æååå šäœã«äžèŽããéšåïŒã«ãªãããã®çµæãæ°ããè¡ã«æ¿å ¥ãããŸãã
ç°¡åãªäŸïŒ
var s = "the cia and fbi"; console.log(s.replace(/\b(fbi|cia)\b/g, function(str) { return str.toUpperCase(); })); // â the CIA and FBI
ãããŠãããã«ãã£ãšé¢çœããã®ããããŸãïŒ
var stock = "1 lemon, 2 cabbages, and 101 eggs"; function minusOne(match, amount, unit) { amount = Number(amount) - 1; if (amount == 1) // , 's' unit = unit.slice(0, unit.length - 1); else if (amount == 0) amount = "no"; return amount + " " + unit; } console.log(stock.replace(/(\d+) (\w+)/g, minusOne)); // â no lemon, 1 cabbage, and 100 eggs
ã³ãŒãã¯æååãåãåããæ°åã®åŸã«åºçŸãããã¹ãŠã®åèªãæ€çŽ¢ããåæ°åã1ã€ãã€æžã£ãæååãè¿ããŸãã
ã°ã«ãŒãïŒ\ d +ïŒã¯åŒæ°éã«åé¡ãããïŒ\ w +ïŒã¯åäœã«åé¡ãããŸãã ãã®é¢æ°ã¯éãæ°å€ã«å€æããŸãããã³ãã¬ãŒãã¯\ d +ã§ãããããããã¯åžžã«æ©èœããŸãã ãããŠã圌ã¯åèªã1人ããæ®ã£ãŠããªãå Žåã«å€æŽããŸãã
欲
replaceã䜿çšãããšãJavaScriptã³ãŒããããã¹ãŠã®ã³ã¡ã³ããåé€ããé¢æ°ãç°¡åã«äœæã§ããŸãã ãããæåã®è©Šã¿ã§ãã
function stripComments(code) { return code.replace(/\/\/.*|\/\*[^]*\*\//g, ""); } console.log(stripComments("1 + /* 2 */3")); // â 1 + 3 console.log(stripComments("x = 10;// ten!")); // â x = 10; console.log(stripComments("1 /* a */+/* b */ 1")); // â 1 1
ãorãæŒç®åã®åã®éšåã¯ã2ã€ã®ã¹ã©ãã·ã¥ãšããã«ç¶ãæ¹è¡æå以å€ã®ä»»æã®æ°ã®æåã«äžèŽããŸãã è€æ°è¡ã®ã³ã¡ã³ããåé€ããéšåã¯ããè€éã§ãã [^]ãã€ãŸãä»»æã®æåãèŠã€ããæ¹æ³ãšããŠã®ç©ºã§ãªãæåããããã¯ã³ã¡ã³ãã¯æ°ããè¡ã§ç¶ç¶ãããæ¹è¡ã¯æéãšäžèŽããªããããããªãªãã䜿çšã§ããŸããã
ããããåã®äŸã®çµè«ã¯ééã£ãŠããŸãããªãã§ïŒ
[^] *éšåã¯ãæåã«ã§ããã ãå€ãã®æåããã£ããã£ããããšããŸãããã®ãããã¬ã®ã¥ã©ãŒã·ãŒãºã³ã®æ¬¡ã®éšåã§äžèŽãèŠã€ãããªãå Žåã1ã€ã®ãã£ã©ã¯ã¿ãŒãããŒã«ããã¯ãããåè©Šè¡ãããŸãããã®äŸã§ã¯ãã¢ã«ãŽãªãºã ã¯æååå šäœããã£ããã£ããããšãããã®åŸããŒã«ããã¯ããŸãã 4æåãããŒã«ããã¯ãããšã圌ã¯è¡ã«* /-ãèŠã€ããŸãããããã¯ç§ãã¡ãéæãããã®ã§ã¯ãããŸãããã³ã¡ã³ãã1ã€ã ããã£ããã£ããè¡ã®æåŸã«ç§»åããŠæåŸã®ã³ã¡ã³ããèŠã€ãããã¯ãããŸããã§ããã
ãã®ãããç¹°ãè¿ãæŒç®åïŒ+ã*ãïŒãããã³{}ïŒã¯è²ªæ¬²ã§ãããšèšããŸããã€ãŸããæåã«ã§ããã ãå€ããååŸãã次ã«æ»ããŸãããã®ãããªæŒç®åïŒ+ïŒã*ïŒã??ã{}ïŒïŒã®åŸã«è³ªåã眮ããšããããã¯æ¬²åŒµãã§ãªããã®ã«å€ãããå¯èœãªéãå°ããªåºçŸãèŠã€ãå§ããŸãã
ãããŠããããç§ãã¡ã«å¿ èŠãªãã®ã§ããã¢ã¹ã¿ãªã¹ã¯ã«å¯èœãªæå°æ°ã®è¡æåã§äžèŽãæ€åºãããããšã«ããã1ãããã¯ã®ã³ã¡ã³ãã®ã¿ãåžåãããã以äžã¯åžåããŸããã
function stripComments(code) { return code.replace(/\/\/.*|\/\*[^]*?\*\//g, ""); } console.log(stripComments("1 /* a */+/* b */ 1")); // â 1 + 1
貪欲ã§ãªãæŒç®åã®ä»£ããã«è²ªæ¬²ãªæŒç®åã䜿çšãããšãå€ãã®ãšã©ãŒãçºçããŸããåçæŒç®åã䜿çšãããšãã¯ãåžžã«è²ªæ¬²ã§ãªããªãã·ã§ã³ãæåã«èæ ®ããŠãã ããã
RegExpãªããžã§ã¯ãã®åçäœæ
å Žåã«ãã£ãŠã¯ãã³ãŒãã®èšè¿°æç¹ã§æ£ç¢ºãªãã¿ãŒã³ãããããªãããšããããŸããããšãã°ãããã¹ãã§ãŠãŒã¶ãŒåãæ€çŽ¢ããã¢ã³ããŒã¹ã³ã¢ã§å²ãå¿ èŠããããŸããããã°ã©ã ã®éå§åŸã«ååãèªèããã ããªã®ã§ãã¹ã©ãã·ã¥ãšã³ããªã¯äœ¿çšã§ããŸããã
ãã ããæååãäœæããŠRegExpã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããããšã¯ã§ããŸãã以äžã«äŸã瀺ããŸãã
var name = ""; var text = " ."; var regexp = new RegExp("\\b(" + name + ")\\b", "gi"); console.log(text.replace(regexp, "_$1_")); // â __ .
åèªã®å¢çãäœæãããšãã¯ãã¹ã©ãã·ã¥ã䜿çšããéåžžã®è¡ã§ã¯ãªãéåžžã®è¡ã«æžã蟌ããããäºéã¹ã©ãã·ã¥ã䜿çšããå¿ èŠããããŸããRegExpã®2çªç®ã®åŒæ°ã«ã¯ãã¬ã®ã¥ã©ãŒã®ãªãã·ã§ã³ãå«ãŸããŸãããã®äŸã§ã¯ããgiããã€ãŸã ã°ããŒãã«ã§å€§æåãšå°æåãåºå¥ããŸããã
ããããååããdea + hl [] rdãã®å ŽåïŒãŠãŒã¶ãŒãã«ã«ããã«ãŒã®å ŽåïŒã¯ã©ãã§ããããããã®çµæãæååã«äžèŽãããã®ãèŠã€ãããªãç¡æå³ãªã¬ã®ã¥ã©ãŒã·ãŒãºã³ãåŸãããŸãã
å«ããªæåã®åã«ããã¯ã¹ã©ãã·ã¥ãè¿œå ã§ããŸãã\ bãŸãã¯\ nã¯ç¹æ®æåã§ãããããæåã®åã«ããã¯ã¹ã©ãã·ã¥ãè¿œå ããããšã¯ã§ããŸããããã ããè±æ°å以å€ã®æåã®åã«åé¡ãªãã¹ã©ãã·ã¥ãè¿œå ã§ããŸãã
var name = "dea+hl[]rd"; var text = " dea+hl[]rd ."; var escaped = name.replace(/[^\w\s]/g, "\\$&"); var regexp = new RegExp("\\b(" + escaped + ")\\b", "gi"); console.log(text.replace(regexp, "_$1_")); // â _dea+hl[]rd_ .
æ€çŽ¢æ¹æ³
indexOfã¡ãœããã¯ã¬ã®ã¥ã©ãŒã§ã¯äœ¿çšã§ããŸãããããããèŠåæ§ãæåŸ ããã ãã®æ€çŽ¢æ¹æ³ããããŸããindexOfãšåæ§ã«ãæåã®çºçã®ã€ã³ããã¯ã¹ãè¿ããŸããçºçããªãã£ãå Žåã¯-1ãè¿ããŸãã
console.log(" word".search(/\S/)); // â 2 console.log(" ".search(/\S/)); // â -1
æ®å¿µãªãããç¹å®ã®ãªãã»ããã§å§ãŸãäžèŽãæ€çŽ¢ããããã«ã¡ãœãããèšå®ããããšã¯äžå¯èœã§ãïŒindexOfã§ãããè¡ãæ¹æ³ïŒãããã¯åœ¹ç«ã€ã§ãããã
LastIndexããããã£
execã¡ãœããã¯ãæååå ã®æå®ãããäœçœ®ããæ€çŽ¢ãéå§ãã䟿å©ãªæ¹æ³ãæäŸããŸãããããããäžäŸ¿ãªæ¹æ³ããããŸãã
éåžžã®ãªããžã§ã¯ãã«ã¯ããããã£ããããŸãããããã®1ã€ã¯ãæååãå«ããœãŒã¹ã§ãããã1ã€ã¯lastIndexã§ãç¹å®ã®æ¡ä»¶ã§ããšã³ããªã®æ¬¡ã®æ€çŽ¢ãéå§ããå Žæãå¶åŸ¡ããŸãã
ãããã®æ¡ä»¶ã«ã¯ãã°ããŒãã«ãªãã·ã§ã³gã®ååšã®å¿ èŠæ§ãããã³execã¡ãœããã䜿çšããŠæ€çŽ¢ãå®è¡ããå¿ èŠããããšããäºå®ãå«ãŸããŸããããåççãªè§£æ±ºçã¯ãåã«è¿œå ã®åŒæ°ãexecã«æž¡ãããšãèš±å¯ããããšã§ãããåçæ§ã¯JavaScriptã®éåžžã®ã€ã³ã¿ãŒãã§ãŒã¹ã®åºæ¬çãªæ©èœã§ã¯ãããŸããã
var pattern = /y/g; pattern.lastIndex = 3; var match = pattern.exec("xyzzy"); console.log(match.index); // â 4 console.log(pattern.lastIndex); // â 5
æ€çŽ¢ãæåããå Žåãexecã®åŒã³åºãã¯ãèŠã€ãã£ããšã³ããªã®åŸã®äœçœ®ãæãããã«lastIndexããããã£ãæŽæ°ããŸããæåããªãã£ãå ŽåãlastIndexã¯ãŒãã«èšå®ãããŸã-æ°ããäœæããããªããžã§ã¯ãã®lastIndexã®ããã«ã
ã°ããŒãã«ãªéåžžå€æ°ãšããã€ãã®execåŒã³åºãã䜿çšããå ŽåãlastIndexã«å¯Ÿãããããã®èªåæŽæ°ã¯åé¡ãåŒãèµ·ããå¯èœæ§ããããŸããåžžé£ã¯ãååã®é話ã§æ®ã£ãäœçœ®ããæ€çŽ¢ãéå§ã§ããŸãã
var digit = /\d/g; console.log(digit.exec("here it is: 1")); // â ["1"] console.log(digit.exec("and now: 1")); // â null
gãªãã·ã§ã³ã®ãã1ã€ã®èå³æ·±ãå¹æã¯ãmatchã¡ãœããã®åäœæ¹æ³ãå€ããããšã§ãããã®ãªãã·ã§ã³ã§åŒã³åºããããšãexecã®çµæã«é¡äŒŒããé åãè¿ã代ããã«ãæååå ã®ãã¹ãŠã®ãã³ãã¬ãŒãã®åºçŸãæ€åºããèŠã€ãã£ãéšåæååã®é åãè¿ããŸãã
console.log("".match(//g)); // â ["", ""]
ãããã£ãŠãã°ããŒãã«æ£èŠå€æ°ã«ã¯æ³šæããŠãã ãããããããå¿ èŠãªå Žå-眮ãæãã®åŒã³åºããŸãã¯lastIndexãç¹ã«äœ¿çšããå Žæ-ããããããããé©çšãããã¹ããã¹ãŠã®å Žåã
çºçãµã€ã¯ã«
å žåçãªã¿ã¹ã¯ã¯ãlastIndexãšexecã䜿çšããŠãã«ãŒãã®æ¬æå ã®äžèŽãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããããã«ãæååå ã®ãã¹ãŠã®ãã³ãã¬ãŒãã®åºçŸã調ã¹ãããšã§ãã
var input = " 3 ... 42 88."; var number = /\b(\d+)\b/g; var match; while (match = number.exec(input)) console.log(" ", match[1], " ", match.index); // â 3 14 // 42 33 // 88 40
å²ãåœãŠå€ãå²ãåœãŠãããå€ã§ãããšããäºå®ã䜿çšãããŸããwhileã«ãŒãã®æ¡ä»¶ãšããŠmatch = re.execïŒinputïŒæ§æã䜿çšããŠãåå埩ã®éå§æã«æ€çŽ¢ããçµæãå€æ°ã«ä¿åãããã¹ãŠã®äžèŽãèŠã€ãã£ããã«ãŒããçµäºããŸãã
INIãã¡ã€ã«ã®è§£æ
ãã®ç« ã®çµããã«ãæ£èŠè¡šçŸã䜿çšããåé¡ãæ€èšããŸããèªåã¢ãŒãã§ã€ã³ã¿ãŒããããä»ããŠæµã«é¢ããæ å ±ãåéããããã°ã©ã ãäœæããŠãããšæ³åããŠãã ããã ïŒããã°ã©ã å šäœã§ã¯ãªããèšå®ãã¡ã€ã«ãèªã¿åãéšåã®ã¿ãèšè¿°ããŸããç³ãèš³ãããŸãããïŒãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
searchengine=http://www.google.com/search?q=$1 spitefulness=9.7 ; ; [larry] fullname=Larry Doe type= website=http://www.geocities.com/CapeCanaveral/11451 [gargamel] fullname=Gargamel type= outputdir=/home/marijn/enemies/gargamel
æ£ç¢ºãªãã¡ã€ã«åœ¢åŒïŒéåžžã«åºã䜿çšãããŠãããéåžžINIãšåŒã°ããŸãïŒã¯æ¬¡ã®ãšããã§ãã-
空çœè¡ãšã»ãã³ãã³ã§å§ãŸãè¡ã¯ç¡èŠãããŸã
-è§æ¬åŒ§ã§å²ãŸããè¡ã¯æ°ããã»ã¯ã·ã§ã³ãéå§ããŸã
-è±æ°åèå¥åãå«ãè¡=ãç¶ãããã®ã»ã¯ã·ã§ã³ã«èšå®ãè¿œå ããŸãã
ãã以å€ã¯ãã¹ãŠäžæ£ãªããŒã¿ã§ãã
ç§ãã¡ã®ã¿ã¹ã¯ã¯ããã®ãããªæååããªããžã§ã¯ãã®é åã«å€æããããšã§ããåãªããžã§ã¯ãã¯ãååããããã£ãšèšå®ã®é åãæã¡ãŸããåã»ã¯ã·ã§ã³ã«ã¯ã1ã€ã®ãªããžã§ã¯ããšããã¡ã€ã«ã®äžéšã«ããã°ããŒãã«èšå®çšã®ãã1ã€ã®ãªããžã§ã¯ããå¿ èŠã§ãã
è¡ããšã«ãã¡ã€ã«ã解æããå¿ èŠãããããããã¡ã€ã«ãè¡ã«åå²ããããšããå§ããããšããå§ãããŸãããã®ããã第6ç« ã§ã¯string.splitïŒ "\ n"ïŒã䜿çšããŸããã OSã«ãã£ãŠã¯ãè¡ãå€æããããã«1ã€ã®æåã§ã¯ãªã\ rã䜿çšããŸãã splitã¡ãœããã¯åŒæ°ãšããŠæ£èŠè¡šçŸãåãå ¥ãããããåŒ/ \ rïŒ\ N /ã䜿çšããŠè¡ãåå²ã§ããŸããããã«ãããè¡éã§åäžã®\ nããã³\ r \ nãèš±å¯ãããŸãã
function parseINI(string) { // , var currentSection = {name: null, fields: []}; var categories = [currentSection]; string.split(/\r?\n/).forEach(function(line) { var match; if (/^\s*(;.*)?$/.test(line)) { return; } else if (match = line.match(/^\[(.*)\]$/)) { currentSection = {name: match[1], fields: []}; categories.push(currentSection); } else if (match = line.match(/^(\w+)=(.*)$/)) { currentSection.fields.push({name: match[1], value: match[2]}); } else { throw new Error(" '" + line + "' ."); } }); return categories; }
ã³ãŒãã¯ãã¹ãŠã®è¡ã調ã¹ãçŸåšã®ã»ã¯ã·ã§ã³ãçŸåšã®ã»ã¯ã·ã§ã³ãã®ãªããžã§ã¯ããæŽæ°ããŸããæåã«ã/ ^ \ s *ïŒ;ã*ïŒïŒ$ /èŠåã䜿çšããŠãè¡ãç¡èŠã§ãããã©ããããã§ãã¯ããŸããã©ã®ããã«æ©èœããã®ã§ããããïŒã«ãã³å ã®éšåã¯ã³ã¡ã³ããšäžèŽããŸããïŒèŠåæ§ãã¹ããŒã¹ã®ã¿ã§æ§æãããè¡ãšäžèŽãããŸãã
è¡ãã³ã¡ã³ãã§ãªãå Žåãã³ãŒãã¯æ°ããã»ã¯ã·ã§ã³ãéå§ãããã©ããã確èªããŸãããã®å ŽåãçŸåšã®ã»ã¯ã·ã§ã³ã®æ°ãããªããžã§ã¯ããäœæãããããã«åŸç¶ã®èšå®ãè¿œå ãããŸãã
æåŸã®ææ矩ãªæ©äŒ-æååã¯éåžžã®èšå®ã§ãããã®å ŽåãçŸåšã®ãªããžã§ã¯ãã«è¿œå ãããŸãã
ãªãã·ã§ã³ãæ©èœããªãå Žåãé¢æ°ã¯ãšã©ãŒãã¹ããŒããŸãã
^ãš$ãé »ç¹ã«äœ¿çšãããšãåŒãéšåã§ã¯ãªãæååå šäœãšäžèŽããããšã«æ³šæããŠãã ããããããã䜿çšããªãå Žåãã³ãŒãå šäœã¯æ©èœããŸãããæã å¥åŠãªçµæãçæããããã®ãããªãšã©ãŒã远跡ããããšã¯å°é£ã§ãã
ifïŒmatch = string.matchïŒ...ïŒïŒã³ã³ã¹ãã©ã¯ãã¯ãwhileã«ãŒãã®æ¡ä»¶ãšããŠå²ãåœãŠã䜿çšããããªãã¯ã«äŒŒãŠããŸããå€ãã®å ŽåãäžèŽåŒã³åºããæåããããšãç¥ããªããããããããã§ãã¯ããifãããã¯å ã®çµæãªããžã§ã¯ãã«ã®ã¿ã¢ã¯ã»ã¹ã§ããŸããifãã§ãã¯ã®çŸããé£éãå£ããªãããã«ãæ€çŽ¢çµæãå€æ°ã«å²ãåœãŠããã®å²ãåœãŠãããã«ãã§ãã¯ãšããŠäœ¿çšããŸãã
åœéæå
èšèªã®æåã®åçŽãªå®è£ ãšããã®ãããªå®è£ ã®ãè±åŽå²©ãã§ã®ãã®åŸã®åºå®ã®ããã«ãJavaScriptã¬ã®ã¥ã©ãŒã¯è±èªã§ã¯èŠã€ãããªãæåã§éãã§ããããšãã°ãJavaScriptæ£èŠè¡šçŸã®ãæåãèšå·ã¯ãè±èªã®ã¢ã«ãã¡ãããã®26æåã®1ã€ã§ãããäœããã®çç±ã§äžç·ãåŒãããŠããå ŽåããããŸããäžæã®æåã§ããã¿ã€ãéãŸãã¯Î²ã®æåã¯ã\ wãšäžèŽããŸããïŒããã³\ WãšäžèŽããŸãïŒã€ãŸããéæåãšäžèŽããŸãïŒã
å¥åŠãªå¶ç¶ã®äžèŽã«ããã\ sïŒã¹ããŒã¹ïŒã¯ãæŽå²çã«ãUnicodeã§ã¹ããŒã¹æåãšèŠãªããããã¹ãŠã®æåãšäžèŽããŸããã
ä»ã®èšèªã®äžéšã®æ£ååå®è£ ã«ã¯ãããã¹ãŠå€§æåããããã¹ãŠã®å¥èªç¹ãããå¶åŸ¡æåããªã©ãUnicodeæåã®ç¹å¥ãªã«ããŽãªãæ€çŽ¢ããããã®ç¹å¥ãªæ§æããããŸãããã®ãããªã«ããŽãªãJavaScriptã«è¿œå ããèšç»ããããŸãããããããããã«ã¯å®è£ ãããŸããã
ãŸãšã
ã¬ã®ã¥ã©ãŒã¯ãã¹ããªã³ã°å ã®æ€çŽ¢ãã¿ãŒã³ãè¡šããªããžã§ã¯ãã§ããæ§æã䜿çšããŠãããã®ãã¿ãŒã³ãè¡šçŸããŸãã
/ abc /æåã®ã·ãŒã±ã³ã¹
/ [abc] /ãªã¹ãããã®ä»»æã®æå
/ [^ abc] /ãªã¹ãããã®æåãé€ãä»»æã®æå
/ [0-9] /ç¯å²å ã®ä»»æã®æå
/ x + /ãã¿ãŒã³ã®1å以äžã®åºçŸx
/ x +ïŒ / 1ã€ä»¥äžã®åºçŸã貪欲ã§ãªã
/ x * / 0å以äžã®åºçŸ
/ xïŒ/ 0åãŸãã¯1åã®åºçŸ
/ x {2,4} / 2ã4åã®åºçŸ
/ïŒabcïŒ/ã°ã«ãŒã
/ a | b | c /ä»»æè€æ°ã®ãã¿ãŒã³ãã
/ \ d /ä»»æã®æ°å
/ \ w /ä»»æã®è±æ°åïŒãæåãïŒ
/ \ s /ä»»æã®ç©ºçœ
/./æ¹è¡ä»¥å€ã®ä»»æã®æå
/ \ b /åèªã®å¢ç
/ ^ /è¡ã®éå§
/ $ /è¡
ã®çµããéåžžã®è¡ã«ã¯ãè¡ã«ãã¿ãŒã³ããããã©ããã確èªãããã¹ãã¡ãœããããããŸããèŠã€ãã£ããã¹ãŠã®ã°ã«ãŒããå«ãé åãè¿ãexecã¡ãœããããããŸããé åã«ã¯ãäžèŽãçºçããæåã®çªå·ãå«ãã€ã³ããã¯ã¹ããããã£ããããŸãã
æååã«ã¯ããã¿ãŒã³ãæ€çŽ¢ããããã®äžèŽã¡ãœãããšããªã«ã¬ã³ã¹ã®éå§äœçœ®ã®ã¿ãè¿ãæ€çŽ¢ã¡ãœããããããŸãã replaceã¡ãœããã¯ããã¿ãŒã³ã®åºçŸãå¥ã®æååã«çœ®ãæããããšãã§ããŸããããã«ããã³ãã¬ãŒãããã³èŠã€ãã£ãã°ã«ãŒãã«åºã¥ããŠçœ®ææååãäœæããé¢æ°ã眮æããããã«æž¡ãããšãã§ããŸãã
ã¬ã®ã¥ã©ãŒã«ã¯ãã¹ã©ãã·ã¥ã®åŸã«æžã蟌ãèšå®ããããŸãããªãã·ã§ã³iã¯èŠåæ§ã®å€§æåãšå°æåãåºå¥ããããªãã·ã§ã³gã¯ãããã°ããŒãã«ã«ããŸããããã«ãããreplaceã¡ãœããã¯ãæåã®ãšã³ããªã ãã§ãªããèŠã€ãã£ããã¹ãŠã®ãšã³ããªã匷å¶çã«çœ®æããŸãã
RegExpã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠãæååããæ£èŠè¡šçŸãäœæã§ããŸãã
ã¬ã®ã¥ã©ãŒã¯ãäžå¿«ãªãã³ãã«ãæã€éãéå ·ã§ããäžéšã®ã¿ã¹ã¯ãå€§å¹ ã«ç°¡çŽ åããä»ã®è€éãªã¿ã¹ã¯ã解決ãããšãã«ç®¡çäžèœã«ãªãå¯èœæ§ããããŸããåžžé£ã䜿çšããèœåã®äžéšã¯ã圌ããæå³ããŠããªãã¿ã¹ã¯ãè©°ã蟌ãèªæã«æµæã§ããããã«ããããšã§ãã
æŒç¿
å¿ ç¶çã«ãåé¡ã解決ããéã«ãç解ã§ããªãã±ãŒã¹ãçºçããæã«ã¯çµ¶æããäžéšã®åžžé£ã®äºæž¬ã§ããªãåäœãèŠãããšããããŸããdebuggex.comã®ãããªãªã³ã©ã€ã³ãµãŒãã¹ã䜿çšããŠã¬ã®ã¥ã©ãŒã·ãŒãºã³ã®æ¯ãèãã調æ»ãããšãèŠèŠåã確èªããŠç®çã®å¹æãšæ¯èŒã§ããããšããããŸãã
ã¬ã®ã¥ã©ãŒãŽã«ã
ã³ãŒãå ã®ããŽã«ããã¯ãç¹å®ã®ããã°ã©ã ãæå°éã®ãã£ã©ã¯ã¿ãŒã§è¡šçŸããå¿ èŠãããã²ãŒã ã§ããã¬ã®ã¥ã©ãŒãŽã«ãã¯ãç¹å®ã®ãã¿ãŒã³ãæ€çŽ¢ããããã«ãå¯èœãªéãå°ããã¬ã®ã¥ã©ãŒãæžãããã®å®çšçãªç·Žç¿ã§ããããã®ãã¿ãŒã³ã®ã¿ã§ãã
å調æŽã«ã€ããŠãéåžžã®è¡ãäœæããŠãããããè¡ã«ãããã©ããã確èªããŸããã¬ã®ã¥ã©ãŒã¯ããããã®æå®ãããéšåæååã®ã¿ãèŠã€ããå¿ èŠããããŸããç¹ã«æãã®ãªãéããåèªã®å¢çã«ã€ããŠå¿é ããªãã§ãã ãããæ£åžžã«åäœããããã«ãªã£ããããããæžãããŠã¿ãŠãã ããã
-è»ãšç«
-ããããšãããã
-ãã§ã¬ããããã§ãªãŒãããã³ãã§ã©ãŒãª-iousã§
çµããåèª
-ããªãªããã³ã³ããã³ãã³ãŸãã¯ã»ãã³ãã³ãç¶ãã¹ããŒã¹ã
-6æåããé·ãåèª
-æåeã®ãªãåèª
// verify(/.../, ["my car", "bad cats"], ["camper", "high art"]); verify(/.../, ["pop culture", "mad props"], ["plop"]); verify(/.../, ["ferret", "ferry", "ferrari"], ["ferrum", "transfer A"]); verify(/.../, ["how delicious", "spacious room"], ["ruinous", "consciousness"]); verify(/.../, ["bad punctuation ."], ["escape the dot"]); verify(/.../, ["hottentottententen"], ["no", "hotten totten tenten"]); verify(/.../, ["red platypus", "wobbling nest"], ["earth bed", "learning ape"]); function verify(regexp, yes, no) { // Ignore unfinished exercises if (regexp.source == "...") return; yes.forEach(function(s) { if (!regexp.test(s)) console.log(" '" + s + "'"); }); no.forEach(function(s) { if (regexp.test(s)) console.log(" '" + s + "'"); }); }
ããã¹ãå ã®åŒçšç¬Š
ã¹ããŒãªãŒãæžããã©ãã§ããã€ã¢ãã°ã瀺ãããã«äžéåŒçšç¬Šã䜿çšãããšããŸããããã§ããã€ã¢ãã°ã®åŒçšç¬Šãäºéã®åŒçšç¬Šã«çœ®ãæããare notãªã©ã®åèªã®çç¥åœ¢ã«åäžã®åŒçšç¬Šãæ®ããŸãã
ããã2ã€ã®åŒçšç¬Šã®äœ¿çšãåºå¥ãããã¿ãŒã³ãèãåºãã眮æãå®è¡ããreplaceã¡ãœããã®åŒã³åºããèšè¿°ããŸãã
åã³æ°å
æ°åã®ã·ãŒã±ã³ã¹ã¯ãåçŽãªèŠåçãªãã¿ãŒã³/ \ d + /ã§èŠã€ããããšãã§ããŸãã
JavaScriptã¹ã¿ã€ã«ã§èšè¿°ãããæ°åã®ã¿ãæ€çŽ¢ããåŒãèšè¿°ããŸããæ°åã®åã®ãã€ãã¹ãŸãã¯ãã©ã¹ã®å¯èœæ§ãå°æ°ç¹ãããã³5e-3ãŸãã¯1E10ã®ææ°è¡šèšããµããŒãããå¿ èŠããããŸã-ããã§ããã©ã¹ãŸãã¯ãã€ãã¹ãå¯èœã§ãããŸãããã€ã³ãã®ååŸã«å¿ ãããæ°åãããããã§ã¯ãããŸããããæ°åãåäžã®ãã€ã³ãã§æ§æãããŠããããã§ã¯ãªãããšã«æ³šæããŠãã ãããã€ãŸãã.5ãŸãã¯5ã¯æå¹ãªæ°å€ã§ããã1ã€ã®ãã€ã³ãèªäœã¯æå¹ã§ã¯ãããŸããã
// . var number = /^...$/; // Tests: ["1", "-1", "+15", "1.55", ".5", "5.", "1.3e2", "1E-4", "1e+12"].forEach(function(s) { if (!number.test(s)) console.log(" '" + s + "'"); }); ["1a", "+-1", "1.2.3", "1+1", "1e4.5", ".5.", "1f5", "."].forEach(function(s) { if (number.test(s)) console.log(" '" + s + "'"); });