JavaScript È°¿ëÆÁ
2020.02.17 / 11:27

¾Ë°í ÀÖ¾î¾ß ÇÒ 8°¡Áö Á¤±Ô½Ä Ç¥Çö from nettuts+ - ½ÇÀü

Äڷγª
Ãßõ ¼ö 295

¾Ë°í ÀÖ¾î¾ß ÇÒ 8°¡Áö Á¤±Ô½Ä Ç¥Çö from nettuts+



nettuts+¿¡ VasiliÀÌ ¾´ À¯¿ëÇÑ Á¤±Ô½Ä Ç¥Çö¿¡ ´ëÇÑ ±ÛÀ» ¿Ã·Á¼­ ³»¿ë Á¤¸®ÇÕ´Ï´Ù. Á¤±Ô½Ä¸¸ Àß ½áµµ ValidationÀ̳ª StringÀ» ´Ù·ç±â°¡ ¹«Ã´ ÆíÇÒÅÙµ¥ ¾µ¶§¸¶´Ù Çò°¥¸®°í ¾à°£Àº ¾î·Æ°Ô ´À²¸Áö°í ½±°Ô ´Ù°¡°¡ÁöÁö ¾Ê´Â°Ô Á¤±Ô½ÄÀÎ°Í °°½À´Ï´Ù.

Vasili´Â Á¤±Ô½Ä¿¡ ´ëÇؼ­ Àß ¸ð¸£¸é Regular Expressions for Dummies ½ºÅ©¸°Ä³½ºÆ® ½Ã¸®Á º¸±â ±ÇÇÏ°í ÀÖ½À´Ï´Ù. ½Ã°£³»¼­ º¸¸é ²Ï µµ¿òÀÌ µÉµí ÇÕ´Ï´Ù. ÀÚ¸® Àâ°í ½ºÅ©¸°Ä³½ºÆ® º¸°Ô´Â Àß ¾ÈµÇ´Â°Í °°½À´Ï´Ù. ±ÛÀ» Àо... ¤¾¤¾

Á¤±ÔÇ¥Çö½ÄÀ» °øºÎÇصµ ¸·»ó Àû¿ëÇÏ·Á¸é ¾à°£ ¸·¸·ÇÏ°í Çò°¥¸®±â ¸¶·ÃÀε¥ À¥°³¹ßÇÒ ¶§ º¸Åë ¸¹ÀÌ »ç¿ëÇÒ ¸¸ÇÑ ³»¿ëÀ» À§ÁÖ·Î ¼³¸íÇØ ÁÖ¾ú±â ¶§¹®¿¡ ÀÌÇØÇϱ⵵ ½±°í È°¿ëÇؼ­ ¾²±â¿¡ ²Ï³ª À¯¿ëÇÒ µí º¸ÀÔ´Ï´Ù. (À§¿¡µµ °£´ÜÈ÷ ¹àÇûÁö¸¸ nettuts+ÀÇ ¿Ã¶ó¿Â Æ÷½ºÆÃÀ» ¹ø¿ª,Á¤¸®ÇÑ ³»¿ëÀÔ´Ï´Ù.) °£´ÜÇÑ Á¤±ÔÇ¥Çö½Ä ¹®¹ýÀº Àü¿¡ ¿Ã¸° Æ÷½ºÆÃÀ» Âü°íÇÏ½Ã¸é µÉ °Í °°½À´Ï´Ù.



Matching a Username

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö



// Pattern
/^[a-z0-9_-]{3,16}$/
C-like


¹®ÀÚ¿­ÀÇ ½ÃÀۺκÐÀ» ã´Â ^ ´ÙÀ½¿¡ ¼Ò¹®ÀÚ(a-z)³ª ¼ýÀÚ(0-9), ¾ð´õ½ºÄÚ¾î(_), ÇÏÀÌÇÂ(-)°¡ ³ª¿Ã ¼ö ÀÖ°í {3, 16}Àº ¾ÕÀÇ Ä³¸¯Å͵é( [a-z0-9_-] )ÀÌ ÃÖ¼Ò 3°³¿¡¼­ 15°³ ÀÌÇÏ·Î ³ª¿Í¾ß ÇÏ°í ¹®ÀÚ¿­ÀÇ ³¡À» ÀǹÌÇÏ´Â $°¡ ¸¶Áö¸·¿¡ ³ª¿É´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : my-us3r_n4m3
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : th1s1s-wayt00_l0ngt0beausername   (³Ê¹« ±è)



Matching a Password

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö




// Pattern
/^[a-z0-9_-]{6,18}$/
C-like


usernameºÎºÐ°ú ¾ÆÁÖ À¯»çÇÕ´Ï´Ù¸¸ À¯ÀÏÇÏ°Ô ´Ù¸¥ ºÎºÐÀº ±ÛÀÚ¼ö°¡ 3~16ÀÚ°¡ ¾Æ´Ï¶ó 6~18ÀÚ¶ó´Â ºÎºÐ( {6,18} )ÀÔ´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : myp4ssw0rd
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : mypa$$w0rd   (´Þ·¯($)Ç¥½Ã°¡ Æ÷ÇԵǾî ÀÖÀ½)



Matching a Hex value

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö





// Pattern
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/

C-like


À̹ø¿¡¼­ ¹®ÀÚ¿­ÀÇ ½ÃÀÛÀ» ã´Â ^·Î ½ÃÀÛÇÕ´Ï´Ù. ±× ´ÙÀ½ number sign(#)Àº µÚ¿¡ ¹°À½Ç¥(?)°¡ Àֱ⠶§¹®¿¡ ¿É¼ÇÀÔ´Ï´Ù. ¹°À½Ç¥(?)´Â ±× ¾Õ¿¡ ³ª¿Â ij¸¯ÅÍ°¡(¿©±â¼­´Â number sign)ÀÌ ¼±ÅûçÇ×(À־ µÇ°í ¾ø¾îµµ µÇ´Â)ÀÓÀ» ÀǹÌÇÕ´Ï´Ù. ±× ´ÙÀ½¿¡ ³ª¿À´Â ±×·ì(°ýÈ£ ¾È¿¡ ÀÖ´Â)¿¡¼­ 2°¡Áö °æ¿ì¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ù¹ø°´Â a¿Í f»çÀÌÀÇ ¼Ò¹®ÀÚ³ª ¼ýÀÚ°¡ 6¹ø³ª¿À´Â °ÍÀÔ´Ï´Ù. ¼¼·Î¹Ù(|)´Â 3°³ÀÇ a¿Í f»çÀÌÀÇ ¼Ò¹®ÀÚ³ª ¼ýÀÚ°¡ ´ë½Å ³ª¿Ã¼öµµ ÀÖÀ½À» À¸¹ÌÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î ¹®ÀÚ¿­ÀÇ ³¡À» ÀǹÌÇÏ´Â $°¡ À§Ä¡ÇÕ´Ï´Ù.

6°³ÀÇ ¹®ÀÚ¿­À» ¾Õ¿¡ µÐ ÀÌÀ¯´Â #ffffff°°Àº Hex°ªÀ» Æļ­°¡ Àâ¾Æ³»µµ·Ï Çϱâ À§ÇÑ °ÍÀ¸·Î ¹Ý´ë·Î 3°³ÀÇ ¹®ÀÚ¿­ °Ë»ç¸¦ ¾Õ¿¡ µÎ¾ú´Ù¸é  Æļ­´Â µÚÀÇ 3°³ÀÇ f´Â »©·Î ¿ÀÁ÷ #fff¸¸À» Àâ¾Æ³ÂÀ» °ÍÀÔ´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : #a3c113
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : #4d82h4   (h °¡ Æ÷ÇԵǾî ÀÖÀ½)



Matching a Slug

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö






// Pattern
/^[a-z0-9-]+$/


C-like


mod_rewrite³ª pretty URLÀ» »ç¿ëÇØ º»ÀûÀÌ ÀÖ´Ù¸é ÀÌ Á¤±ÔÇ¥Çö½ÄÀ» »ç¿ëÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. ½ÃÀÛ ¹®ÀÚ¿­ÀÎ ^°¡ óÀ½¿¡ ³ª¿À°í µÚÀÌ¾î ¼Ò¹®ÀÚ, ¼ýÀÚ, ÇÏÀÌÇÂ(-)ÀÌ ÇÑ°³ ¶Ç´Â ÇÑ°³ÀÌ»ó(+±âÈ£)³ª¿À°í ¸¶Áö¸·À¸·Î ¹®ÀÚ¿­ÀÇ ³¡ÀÎ $°¡ ³ª¿É´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : my-title-here
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : my_title_here   (¾ð´õ½ºÄÚ¾î( _ ) °¡ Æ÷ÇԵǾî ÀÖÀ½)



Matching an Email

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö







// Pattern

/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/



C-like


¹®ÀÚ¿­ÀÇ ½ÃÀÛÀÎ ^·Î ½ÃÀÛÇÏ°í ù¹ø° ±×·ì(°ýÈ£ ¾È)¿¡¼­ 1°³ ¶Ç´Â ±× ÀÌ»óÀÇ ¼Ò¹®ÀÚ, ¼ýÀÚ, ¾ð´õ½ºÄÚ¾î( _ ), Á¡(.), ÇÏÀÌÇÂ(-)°¡ ³ª¿É´Ï´Ù. escapeÇÏÁö ¾ÊÀº Á¡(.)Àº ´Ù¸¥  ¹®ÀÚ¸¦ ÀǹÌÇϱ⠶§¹®¿¡ Á¡(.)Àº À̽ºÄÉÀÌÇÁ ÇØÁÝ´Ï´Ù.(\.) ±× µÚ¿¡ ¾Ü ±âÈ£(@)°¡ ³ª¿À°í ±× ´ÙÀ½ 1°³¶Ç´Â ±× ÀÌ»óÀÇ ¼Ò¹®ÀÚ, ¼ýÀÚ, ¾ð´õ½ºÄÚ¾î( _ ), Á¡(.), ÇÏÀÌÇÂ(-)À¸·Î ±¸¼ºµÈ µµ¸ÞÀθíÀÌ ¿É°í ±× ÈÄ Á¡(À̽ºÄÉÀÌÇÁµÈ)ÀÌ ¼Ò¹®ÀÚ¿Í Á¡À¸·Î µÈ 2~6°³ÀÇ ¹®ÀÚ¿­ÀÌ ¿É´Ï´Ù. 2~6°³·Î ÇÑ ÀÌÀ¯´Â .co.krÀ̳ª .ny.us°°Àº ±¹°¡ TLD(Top-Level-Domain)¶§¹®ÀÌ¸ç ¸¶Áö¸·À¸·Î ¹®ÀÚ¿­ÀÇ ³¡($)ÀÎ ¿É´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : john@doe.com
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : john@doe.something   (TLS°¡ ³Ê¹« ±è)



Matching a URL

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö








// Pattern
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w_\.-]*)*\/?$/




C-like


ÀÌ Á¤±ÔÇ¥Çö½ÄÀº À§¿¡ ³ª¿Â Á¤±ÔÇ¥Çö½ÄÀÇ ÃÖÁ¾º»À̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ù¹ø° ±×·ìÀº ¸ðµÎ ¿É¼ÇÀε¥ ÀÌ°ÍÀº URLÀÌ "http://"³ª "https://" ¶Ç´Â µÑ´Ù ¾øÀÌ ½ÃÀÛÇϵµ·Ï ÇÑ´Ù. sµÚ¿¡ ¹°À½Ç¥(?)´Â URLÀÌ http¿Í https¸¦ ¸ðµÎ Çã¿ëÇÑ´Ù. ÀÌ ±×·ìÀüü¸¦ ¼±ÅûçÇ×À¸·Î Çϱâ À§Çؼ­ µÚ¿¡ ¹°À½Ç¥(?)¸¦ Ãß°¡Çß½À´Ï´Ù.

´ÙÀ½Àº µµ¸ÞÀθíÀ¸·Î ÇÑ°³ÀÌ»óÀÇ ¼ýÀÚ, ¹®ÀÚ¿­, Á¡(.), ÇÏÀÌÇÂ(-)µÚ¿¡ ¶Ç´Ù¸¥ Á¡(.)ÀÌ ¿À°í ±× µÚ¿¡ 2~6°³ÀÇ ¹®ÀÚ¿Í Á¡ÀÌ ¿É´Ï´Ù. À̾îÁö´Â ºÎºÐÀ» Ãß°¡ÀûÀÎ ÆÄÀÏ°ú µðÅØÅ丮¿¡ ´ëÇÑ ºÎºÐÀ¸·Î ÀÌ ±×·ì¿¡¼­´Â °¹¼ö¿¡ °ü°è¾øÀÌ ½½·¡½¬(/), ¹®ÀÚ, ¼ýÀÚ, ¾ð´õ½ºÄÚ¾î(_), ½ºÆäÀ̽º, Á¡(.), ÇÏÀÌÇÂ(-)ÀÌ ³ª¿Ã ¼ö ÀÖÀ¸¸ç ÀÌ ±×·ìÀº ¸¹Àº ¼öÀÇ µð·ºÅ丮¿Í ÆÄÀÏ°ú ¸ÅÄ¡µË´Ï´Ù. ¹°À½Ç¥(?)´ë½Å º°Ç¥(*)¸¦ »ç¿ëÇÑ °ÍÀº º°Ç¥´Â 0 ¶Ç´Â 1ÀÌ ¾Æ´Ñ 0 ¶Ç´Â 1°³ÀÌ»óÀ» ÀǹÌÇϱ⠶§¹®ÀÔ´Ï´Ù. ¸¸¾à ¹°À½Ç¥(?)¸¦ »ç¿ëÇß´Ù¸é ¿ÀÁ÷ ÇÑ°³ÀÇ ÆÄÀÏ/µð·ºÅ丮¸¸ ¸ÅÄ¡µÉ ¼ö ÀÖ¾úÀ» °ÍÀÔ´Ï´Ù.

±× µÚ¿¡ ½½·¡½Ã(/) ¸ÅÄ¡µÇÁö¸¸ ÀÌ°ÍÀº ¼±ÅûçÇ×ÀÌ¸ç ¸¶Áö¸·À¸·Î ¹®ÀÚ¿­ÀÇ ³¡($)ÀÌ ³ªÅ¸³³´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : http://net.tutsplus.com/about
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : http://google.com/some/file!.html    (´À³¦Ç¥°¡ Æ÷ÇԵǾî ÀÖÀ½)



Matching an IP Address

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö









// Pattern

/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/





C-like


ÀÚ, Àú´Â °ÅÁþ¸»À» ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ Á¤±ÔÇ¥Çö½ÄÀº Á¦°¡(Vasili) ÀÛ¼ºÇÏÁö ¾Ê¾Ò°í ÀÌ°÷¿¡¼­ °¡Á®¿Ô½À´Ï´Ù.

Á¤±Ô½ÄÀÌ Ã¹¹ø°·Î Àâ¾Æ³½ ±×·ìÀº ½ÇÁ¦·Î ¸ÅÄ¡µÈ(captured)µÈ ±×·ìÀÌ ¾Æ´Õ´Ï´Ù. ¿Ö³ÄÇϸé ?: °¡ ±×¾È¿¡ À§Ä¡ÇÏ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. ?:´Â Æļ­°¡ ÀÌ ±×·ìÀ» Àâ¾Æ³»Áö ¾Êµµ·Ï ÇÕ´Ï´Ù. ¶ÇÇÑ ÀÌ ÀâÈ÷Áö ¾Ê´Â ±×·ìÀº 3¹ø ¹Ýº¹µÇ±â¸¦ ¿øÇÕ´Ï´Ù.(±×·ìÀÇ ³¡¿¡ {3}) ÀÌ ±×·ìÀº ¶Ç´Ù¸¥ ¼­ºê±×·ì°ú Á¡(.)À» ´ã°í ÀÖ°í Æļ­´Â Á¡(.)ÀÌ µÚ¿¡ ÀÖ´Â ¼­ºê±×·ìÀ» ¸ÅÄ¡ÇÏ·Á°í ã½À´Ï´Ù.

¼­ºê±×·ìÀº ¶Ç´Ù¸¥ ÀâÈ÷Áö ¾Ê´Â(non-captured) ±×·ìÀÔ´Ï´Ù. ÀÌ°ÍÀº 0~5°¡ µÚ¿¡ ¿À´Â "25"°Å³ª 0~4¿Í ¸ðµç ¼ýÀÚ°¡ µÚ¿¡ ¿À´Â "2"À̰ųª ¿É¼ÇÀÌ 0 ¶Ç´Â 2°³ÀÇ ¼ýÀÚ°¡ À̾îÁö´Â ¼ýÀÚµéÀÇ ¹®ÀÚ¼ÂÀÇ ¹­À½ÀÔ´Ï´Ù.

ÀÌ 3°¡Áö°¡ ¸ÅÄ¡µÈ ÀÌÈÄ¿¡ ´ÙÀ½ ĸÃĵÇÁö ¾Ê´Â ±×·ìÀ¸·Î µé¾î°©´Ï´Ù. ÀÌ°ÍÀº 0~5°¡ À̾îÁö´Â "25" ¶Ç´Â 0~4¿Í ÇÔ²² ¿À´Â "2" ±×¸®°í ¸¶Áö¸·¿¡ ´Ù¸¥ ¼ýÀÚ(0À̳ª µÎÀÚ¸® ¼ýÀÚ)°¡ ¿É´Ï´Ù.

¸¶Áö¸· ¹®ÀÚ($)¿Í ÇÔ²² ÀÌ º¹ÀâÇÑ Á¤±ÔÇ¥Çö½ÄÀÌ ³¡³³´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : 73.60.124.136
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : 256.60.124.136    (ù¹ø° ¼ýÀÚ´Â 250~255À̾î¾ß ÇÔ)



Matching an HTML Tag

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö










// Pattern
/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/






C-like


ÀÌ Æ÷½ºÆÿ¡¼­ °¡Àå À¯¿ëÇÑ Á¤±ÔÇ¥Çö½Ä ÁßÀÇ ÇϳªÀÔ´Ï´Ù. ÀÌ°ÍÀº ¾î¶² HTMLű׵µ ¸ÅÄ¡ÇÒ ¼ö ÀÖ°í ÀϹÝÀûÀ¸·Î ¶óÀÎÀÇ Ã¹¹ø°¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù.

ù¹ø°·Î ¿À´Â °ÍÀº ű×À̸§ÀÔ´Ï´Ù. ÀÌ°ÍÀº ¹Ýµå½Ã ÇÑ°³ÀÌ»óÀÇ ¹®ÀÚ°¡ µÇ¾î¾ß Çϸç ù¹ø°·Î ÀâÈ÷´Â ±×·ìÀ̱⵵ ÇÕ´Ï´Ù. ÀÌ°ÍÀº ´Ý´Âű׸¦ Àâ¾ÒÀ» ¶§ ã¾Æ¾ß ÇÒ °ªÀÔ´Ï´Ù. ´ÙÀ½¿¡´Â ű×ÀÇ ¼Ó¼ºÀÔ´Ï´Ù. ÀÌ°ÍÀº >¸¦ Á¦¿ÜÇÑ ¾î¶² ¹®ÀÚµµ ¿Ã ¼ö ÀÖ½À´Ï´Ù. ¿É¼Ç»çÇ×ÀÌÁö¸¸ 1°³ÀÌ»óÀÇ Ä³¸¯ÅÍ¿Í ¸ÅÄ¡µÇ±â¸¦ ¿øÇϱ⠶§¹®¿¡ º°Ç¥°¡ »ç¿ëµÇ¾ú½À´Ï´Ù. Ç÷¯½º±âÈ£´Â ¼Ó¼º°ú °ªÀ» ÀÌ·ç°í º°Ç¥´Â ¿øÇÏ´Â ¸¸Å­ÀÇ ¼Ó¼º(attribute)°¡ ¸ÅÄ¡µÉ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

´ÙÀ½À¸·Î ¼¼¹ø° non-capture±×·ìÀÌ ¿À´Âµ¥ ³»ºÎ¿¡ >±âÈ£°¡ ´ã±æ °ÍÀÌ°í ÄÁÅÙÃ÷ºÎºÐ°ú ´Ý´Âűװ¡ ÀÖ½À´Ï´Ù.(°ø¹é°ú ½½·¡½Ã(/), > ±âÈ£) ù¿É¼ÇÀº ¹®Àڵ鿡 À̾îÁö´Â >±âÈ£¸¦ ã½À´Ï´Ù. \1Àº ĸÃÄµÈ Ã¹¹ø° ±×·ì¿¡¼­ÀÇ ³»¿ëÀ» Ç¥ÇöÇϴµ¥ »ç¿ëµË´Ï´Ù. ÀÌ °æ¿ì¿¡´Â ű×ÀÇ À̸§ÀÌ µË´Ï´Ù. ÀÌÁ¦ ű×À̸§ÀÌ ¸ÅÄ¡µÇÁö ¾ÊÀ¸¸é ÀÚ½ÅÀÇ ´Ý´Âű׸¦ ã±â¸¦ ¿øÇÕ´Ï´Ù. ÀÌ°ÍÀº "/>"°¡ À̾îÁö´Â ÇÑ°³ÀÌ»óÀÇ °ø¹éÀÌ ÇÊ¿äÇÕ´Ï´Ù.

MatchµÇ´Â ½ºÆ®¸µ : <a href="http://net.tutsplus.com/">Nettuts+</a>
MatchµÇÁö ¾Ê´Â ¹®ÀÚ¿­ : <img src="img.jpg" alt="My image>" />    (¼Ó¼ºÀº >±âÈ£¸¦ °¡Áú ¼ö ¾øÀ½)




³»¿ëÀº ¾ÆÁÖ ÁÁÀºµ¥ ±ÞÇÏ°Ô ÀÛ¼ºÇß´õ´Ï ¹ø¿ªÀÌ ¿µ ±×·¸³×¿ä. ¿ø¹®°¡¼­ º¸½Ã±æ....(Àº±Ù½½Â½ ±ÞÇÏ°Ô Çؼ­ ¹ø¿ªÀÌ ÀÌ·± ô... ¤§¤§¤§)