ì¤ì ì
무 ìí©ì ìê°í´ë´
ìë¤. "+7(903)-123-45-67"ê°ì ì íë²í¸ìì 79035419441ì²ë¼ ì«ìë§ ë¨ê²¨ì¼ í©ëë¤.
ì´ë ê² íë ¤ë©´ ì«ìê° ìë 문ì를 모ë ì°¾ìì ì§ì°ë©´ ëê² ì£ . ì¬ê¸°ì 문ì í´ëì¤ë¥¼ ì¬ì©í ì ììµëë¤.
문ì í´ëì¤(character class) ë í¹ì ì§í©ì í¬í¨ë 모ë 기í¸ì ì¼ì¹íë í¹ë³í ííì ëë¤.
ê°ì¥ 먼ì ì«ì í´ëì¤ë¶í° ììë´
ìë¤. ì«ì(digit) í´ëì¤ë \dë¼ê³ ì°ê³ 'ì무 ì«ì íëâì ëìí©ëë¤.
ììì ëì¨ ì íë²í¸ ìììì 첫 ë²ì§¸ ì«ì를 ì°¾ìë´ ìë¤.
let str = "+7(903)-123-45-67";
let regexp = /\d/;
alert( str.match(regexp) ); // 7
g íëê·¸ê° ìì¼ë©´ ì ê· ííìì í¨í´ê³¼ ì¼ì¹íë 첫 문ìë§ ì°¾ìµëë¤. ì¬ê¸°ìë \dì ì¼ì¹íë 첫 ë²ì§¸ ì«ìì´ì£ .
ì´ì g íë그를 ì¶ê°í´ 모ë ì«ì를 ì°¾ìë´
ìë¤.
let str = "+7(903)-123-45-67";
let regexp = /\d/g;
alert( str.match(regexp) ); // ì¼ì¹íë 문ìì ë°°ì´: 7,9,0,3,1,2,3,4,5,6,7
// ì´ ë°°ì´ë¡ ì«ìë§ ìë ì íë²í¸ë¥¼ ë§ëìë¤.
alert( str.match(regexp).join('') ); // 79035419441
ì¬ê¸°ê¹ì§ ì«ì를 ì°¾ë 문ì í´ëì¤ììµëë¤. ë¬¼ë¡ ë¤ë¥¸ 문ì í´ëì¤ë ììµëë¤.
ì주 ì¬ì©íë 문ì í´ëì¤ìë ë¤ì í´ëì¤ê° ììµëë¤.
\d('digit(ì«ì)'ì âdâ)- ì«ì:
0ìì9ì¬ì´ì 문ì \s('space(공백)'ì âsâ)- ì¤íì´ì¤, í(
\t), ì¤ ë°ê¿(\n)ì ë¹ë¡¯íì¬ ì주 ëë¬¼ê² ì°ì´ë\v,\f,\rì í¬í¨íë 공백 ê¸°í¸ \w('word(ë¨ì´)'ì âwâ)- âë¨ì´ì ë¤ì´ê°ëâ 문ìë¡ ë¼í´ 문ìë ì«ì, ë°ì¤
_ì í¬í¨í©ëë¤. í¤ë¦´ 문ìë íë 문ìê°ì ë¹ ë¼í´ 문ìë\wì í¬í¨ëì§ ììµëë¤.
ì를 ë¤ì´ \d\s\wë 1 aì²ë¼ âì«ìâ ë¤ì â공백 문ìâ ë¤ì 'ë¨ì´ì ë¤ì´ê°ë 문ìâ를 ì미í©ëë¤.
ì ê· ííìì ì¼ë° 기í¸ì 문ì í´ëì¤ë¥¼ ê°ì´ ì¬ì©í ì ììµëë¤.
ììë¡, CSS\dë CSS ë¤ì ì«ì íëê° ìë 문ìì´ê³¼ ì¼ì¹í©ëë¤.
let str = "Is there CSS4?";
let regexp = /CSS\d/;
alert( str.match(regexp) ); // CSS4
ëí 문ì í´ëì¤ë¥¼ ì¬ë¬ ê° ì¬ì©í ìë ììµëë¤.
alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5'
ì¼ì¹ ê²°ê³¼(ê°ê°ì 문ì í´ëì¤ì ê¸ì íëì© ì¼ì¹):
ë°ë í´ëì¤
모ë 문ì í´ëì¤ìë 'ë°ë í´ëì¤âê° ììµëë¤. ê°ì ê¸ìë¡ í기íì§ë§ ë문ìë¡ ì¬ì©í©ëë¤.
'ë°ëâë ë¤ì ììë¤ì²ë¼ í´ë¹ 문ì를 ì ì¸í 모ë 문ìì ì¼ì¹íë¤ë ë»ì ëë¤.
\D- ì«ìê° ìë 문ì:
\dì ì¼ì¹íì§ ìë ì¼ë° ê¸ì ë±ì 모ë 문ì \S- ê³µë°±ì´ ìë 문ì:
\sì ì¼ì¹íì§ ìë ì¼ë° ê¸ì ë±ì 모ë 문ì \W- ë¨ì´ì ë¤ì´ê°ì§ ìë 문ì:
\wì ì¼ì¹íì§ ìë ë¹ ë¼í´ 문ìë 공백 ë±ì 모ë 문ì
ì´ë² ì±í°ì 첫 ë¶ë¶ìì +7(903)-123-45-67ê°ì 문ìì´ìì ì«ì를 모ë ì°¾ì í©ì³ì ì«ìë§ ë¨ì ì íë²í¸ë¥¼ ë§ëë ë°©ë²ì ììë´¤ìµëë¤.
let str = "+7(903)-123-45-67";
alert( str.match(/\d/g).join('') ); // 79031234567
ë ì§§ê² í ì ìë ë¤ë¥¸ ë°©ë²ì \Dë¡ ì«ìê° ìë 문ì를 ì°¾ì 문ìì´ìì ìì ë²ë¦¬ë ê²ì
ëë¤.
let str = "+7(903)-123-45-67";
alert( str.replace(/\D/g, "") ); // 79031234567
ì ì 'ì무 문ìâìë ì¼ì¹
ì .ì ì¤ ë°ê¿ 문ì를 ì ì¸í 모ë 문ìì ì¼ì¹íë í¹ë³í 문ì í´ëì¤ì
ëë¤.
ìì:
alert( "Z".match(/./) ); // Z
ì ê· ííì ìììë ì¬ì© ê°ë¥í©ëë¤.
let regexp = /CS.4/;
alert( "CSS4".match(regexp) ); // CSS4
alert( "CS-4".match(regexp) ); // CS-4
alert( "CS 4".match(regexp) ); // CS 4 (공백ë 문ììì.)
ì ì ì무 문ììë ì¼ì¹íì§ë§ '문ìì ë¶ì¬âì ì¼ì¹íì§ë ììµëë¤. ë°ëì ì¼ì¹íë 문ìê° ìì´ì¼ í©ëë¤.
alert( "CS4".match(/CS.4/) ); // null, ì ê³¼ ì¼ì¹íë 문ìê° ì기 ë문ì ì¼ì¹ ê²°ê³¼ê° ììµëë¤.
âsâ íëê·¸ì ì ì ì¬ì©í´ ì ë§ë¡ 모ë 문ì 찾기
기본ì ì¼ë¡ë ì ì ì¤ ë°ê¿ 문ì \nìë ì¼ì¹íì§ ììµëë¤.
ì¦, ì ê· ííì A.Bë Aì B ì¬ì´ì \nì ì ì¸í ì´ë¤ 문ìë ë¤ì´ê° 문ìì´ê³¼ ì¼ì¹í©ëë¤.
alert( "A\nB".match(/A.B/) ); // null (ì¼ì¹íì§ ìì)
ì¤ì ë¡ë ì ì´ ì¤ ë°ê¿ 문ì를 í¬í¨í ì ë§ë¡ 모ë 문ìì ì¼ì¹í´ì¼ íë ìí©ì´ ì주 ììµëë¤.
ì´ë´ ë ì¬ì©íë ê²ì´ sì
ëë¤. ì ê· ííìì s를 ì¬ì©íì ë ì .ì 모ë 문ìì ì¼ì¹í©ëë¤.
alert( "A\nB".match(/A.B/s) ); // A\nB (ì¼ì¹!)
https://caniuse.com/#search=dotallìì ì§ì ì¬ë¶ì ìµì ìí©ì íì¸í´ë³´ì¸ì. ì´ ê¸ì ìì±íë ìì ì s íëê·¸ë Firefox, IE, Edgeìì ìì§ ì§ìíì§ ììµëë¤.
ë¤ííë ì´ë ë¸ë¼ì°ì ììë ì¸ ì ìë ëìì´ ììµëë¤. [\s\S]ê°ì ì ê· ííìì ì¬ì©í´ '모ë 문ìâì ì¼ì¹ìí¬ ì ììµëë¤.
alert( "A\nB".match(/A[\s\S]B/) ); // A\nB (ì¼ì¹!)
[\s\S] í¨í´ì 문ì ê·¸ëë¡ì ë»ì '공백 문ì ëë 공백 문ìê° ìë 문ìâì
ëë¤. ê²°êµì 모ë 문ìë¼ë ë»ì´ì£ . ì´ë° ìì¼ë¡ ë°ëëë í´ëì¤ë¥¼ ê°ì´ ì¬ì©íë ë¤ë¥¸ í¨í´, ì를 ë¤ë©´ [\d\D]ì ì¬ì©í ìë ììµëë¤. ëë ì무 문ìë ìë ê²½ì°ë¥¼ ì ì¸íë [^]ì ì¬ì©í ìë ììµëë¤.
ê·¸ë¦¬ê³ ì´ ê¸°ì ì ì´ì©í´ ê°ì ì ê· ííì ììì ì ì ë ê°ì§ í¨í´ì 모ë ì¬ì©í ì ììµëë¤. ì¤ ë°ê¿ 문ì를 í¬í¨íì§ ìë ìëì ì .ê³¼ 모ë 문ìì ì¼ì¹íë [\s\S]ê°ì í¨í´ì ëìì ì¬ì© ê°ë¥í©ëë¤.
ì¬ëì ë³´íµ ê³µë°±ì í¬ê² ììíì§ ììµëë¤. ì¬ëìê²ë 문ìì´ 1-5ë 1 - 5ë ê±°ì ê°ì¼ëê¹ì.
íì§ë§ ì ê· ííììì 공백ì ì¼ëíì§ ìì¼ë©´ ìíë 결과를 ì»ì§ 못í ì ììµëë¤.
íì´íì¼ë¡ 구ë¶ë ì«ì를 ì°¾ìë´ ìë¤.
alert( "1 - 5".match(/\d-\d/) ); // null, ì¼ì¹ ê²°ê³¼ ìì!
ì ê· ííìì 공백ì ë£ì´ì \d - \dë¡ ë°ê¿ë´
ìë¤.
alert( "1 - 5".match(/\d - \d/) ); // 1 - 5, ì´ì ì ëë¡ ëë¤ì.
// \s í´ëì¤ë¥¼ ì¬ì©í´ë ë©ëë¤.
alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5, ì´ê²ë ë©ëë¤.
공백 ìì 문ìì ëë¤. ë¤ë¥¸ 문ìë§í¼ì´ë ì¤ìí©ëë¤.
ì ê· ííìì 공백ì ì¶ê°íê±°ë ì§ì°ë©´ ë¤ë¥´ê² ìëí©ëë¤.
ì¦, ì ê· ííìììë 모ë 문ìê° ì¤ìí©ëë¤. 공백ë ë§ì°¬ê°ì§ë¡ì.
ìì½
문ì í´ëì¤ìë ë¤ì í´ëì¤ë¤ì´ ììµëë¤.
\dâ ì«ì\Dâ ì«ìê° ìë 문ì\sâ ì¤íì´ì¤, í, ì¤ ë°ê¿ 문ì\Sâ\s를 ì ì¸í 모ë 문ì\wâ ë¼í´ 문ì, ì«ì, ë°ì¤'_'\Wâ\w를 ì ì¸í 모ë 문ì.â ì ê· ííì's'íëê·¸ê° ìì¼ë©´ 모ë 문ì, ìì¼ë©´ ì¤ ë°ê¿\nì ì ì¸í 모ë 문ì
íì§ë§ ì´ê² ì ë¶ê° ìëëë¤!
ìë°ì¤í¬ë¦½í¸ìì 문ìì´ì ì¬ì©íë ì ëì½ë ì¸ì½ë©ì 문ìì ì¬ë¬ íë¡í¼í°ë¥¼ ì ê³µí©ëë¤. ì´ë¤ ì¸ì´ì ìíë ê¸ìì¸ì§ ëë ê¸ìê° ìë 구ëì ì¸ì§ ìë ¤ì£¼ë íë¡í¼í°ì²ë¼ì.
ì´ë° íë¡í¼í°ë¥¼ 기ì¤ì¼ë¡ 문ì를 ì°¾ì ìë ììµëë¤. u íë그를 ì¬ì©íë©´ ëëë°ì. ë¤ì ê¸ìì ììë³´ëë¡ íì£ .

ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.