정규표현식(Regex) practice

박재현·2022년 3월 3일
0
post-custom-banner

📌 ^, & (Anchors)

^

  • 문자열에서 ^ 뒤에 붙은 단어로 시작하는 부분을 찾아 배열로 반환
  • 없으면 null
"coding is fun".match(/^co/); // ['co']
"coding is fun".match(/^fun/); // null

&

  • 문자열에서 $ 앞 표현식으로 끝나는 부분 찾아 배열로 반환
  • 없으면 null
"coding is fun".match(/un$/); // ['un']
"coding is fun".match(/is$/); // null

문자열을 ^ 와 $ 로 감싸주면 그 사이에 들어간 문자열과 정확하게 일치하는 부분을 찾습니다

"coding is fun".match(/^coding is fun$/);
// ["coding is fun"]

📌 *, +, ?, {} (Quantifiers)

*

    • 바로 앞의 문자가 0번 이상 나타나는 경우를 검색
"co cod code codee coding codeeeeee codingding".match(/ode*/g);
// ["od", "ode", "odee", "od", "odeeeeee", "od"]

+

    • 바로 앞의 문자가 1번 이상 나타나는 경우를 검색
"co cod code codee coding codeeeeee codingding".match(/ode*/g);
// ["ode", "odee", "odeeeeee"]

?

  • ? 앞의 문자가 0번 혹은 1번 나타나는 경우만 검색
"co cod code codee coding codeeeeee codingding".match(/ode?/g);
// ["od", "ode", "ode", "od", "ode", "od"]
"co cod code codee coding codeeeeee codingding".match(/ode*?/g);
// ["od", "od", "od", "od", "od", "od"]
"co cod code codee coding codeeeeee codingding".match(/ode+?/g);
// ["ode", "ode", "ode"]

{}

  • {} 안에 숫자를 넣어 연속되는 갯수를 설정하여 검색
"co cod code codee coding codeeeeee codingding".match(/ode{2}/g);
// 2개의 "e"를 포함한 문자열을 검색합니다.
// ["odee", "odee"]

"co cod code codee coding codeeeeee codingding".match(/ode{2,}/g);
// 2개 이상의 "e"를 포함한 문자열을 검색합니다.
// ["odee", "odeeeeee"]

"co cod code codee coding codeeeeee codingding".match(/ode{2,5}/g);
// 2개 이상 5개 이하의 "e"를 포함한 문자열을 검색합니다.
// ["odee", "odeeeee"]

📌 | (OR operator)

  • or 조건으로 검색
"Cc Oo Dd Ee".match(/O|D/g); // ["O", "D"]
"Cc Oo Dd Ee".match(/c|e/g); // ["c", "e"]
"Cc Oo Dd Ee".match(/D|e/g); // ["D", "e"]
"Ccc Ooo DDd EEeee".match(/D+|e+/g);
// + 는 1번 이상 반복을 의미하기 때문에
// ["DD", "eee"] 를 반환합니다.

📌 [] (Bracket Operator)

  • 대괄호 안에 명시된 값을 검색
[abc] // a or b or c 를 검색합니다. or(|) Operator 로 작성한 a|b|c 와 동일하게 작동합니다.
[a-c] // [abc] 와 동일합니다. - 로 검색 구간을 설정할 수 있습니다.

"Ccc Ooo DDd EEeee".match(/[CD]+/g); // [] 에 + 등의 기호를 함께 사용할 수도 있습니다.
// C or D 가 한 번 이상 반복된 문자열을 반복 검색하기 때문에
// ["C", "DD"] 가 반환됩니다.

"Ccc Ooo DDd EEeee".match(/[co]+/g); // ["cc", "oo"]
"Ccc Ooo DDd EEeee".match(/[c-o]+/g); // - 때문에 c ~ o 구간을 검색하여
// ["cc", "oo", "d", "eee"] 가 반환됩니다.

"AA 12 ZZ Ad %% Az !# dd 54 zz".match(/[A-Za-z]+/g); 
// a~z 또는 A~Z 에서 한 번 이상 반복되는 문자열을 반복 검색하기 때문에
// ["AA", "ZZ", "Ad", "Az", "dd", "zz"] 를 반환합니다.
"AA 12 ZZ Ad %% Az !# dd 54 zz".match(/[A-Z]+/gi);
// flag i 는 대소문자를 구분하지 않기 때문에 위와 동일한 결과를 반환합니다.
// ["AA", "ZZ", "Ad", "Az", "dd", "zz"]

"AA 12 ZZ Ad %% Az !# dd 54 zz".match(/[0-9]+/g);
// 숫자도 검색 가능합니다.
// ["12", "54"]

"aAbB$#67Xz@9".match(/[^a-zA-Z]+/g);
// [] 안에 ^ 를 사용하면 anchor 로서의 문자열의 처음을 찾는것이 아닌 
// 부정을 나타내기 때문에 [] 안에 없는 값을 검색합니다.
// ["$#67", "@9"]

📌 \d, \D (Character classes)

\d

  • d 는 digit 을 의미하며 0 ~ 9 사이의 숫자 하나를 검색합니다.
  • [0-9] 와 동일

\D

  • \D 는 not Digit 을 의미하며, 숫자가 아닌 문자 하나를 검색합니다.
  • [^0-9] 와 동일합니다.
"abc34".match(/\d/); // ["3"]
"abc34".match(/[0-9]/) // ["3"]
"abc34".match(/\d/g); // ["3", "4"]
"abc34".match(/[0-9]/g) // ["3", "4"]
"abc34".match(/\D/); // ["a"]
"abc34".match(/[^0-9]/); // ["a"]
"abc34".match(/\D/g); // ["a", "b", "c"]
"abc34".match(/[^0-9]/g); // ["a", "b", "c"]

\w

  • 알파벳 대소문자, 숫자, _(underbar) 중 하나를 검색
  • [a-zA-Z0-9_]와 동일

\W

  • 알파벳 대소문자, 숫자, _ (underbar)가 아닌 문자 하나를 검색
    -[^a-zA-Z0-9_]와 동일

post-custom-banner

0개의 댓글