1 분 소요

소개

Regex(Regular expressions)

  • 상세한 주석을 코드에 추가
// find all filenames without space that end with js / jsx/ ts
const jsFilnameRe = /^\S.(jsx?|ts)$/
  • 가독성이 좋은 정규식을 작성하는 것은 추후의 코드를 읽게 될 때 도움이 된다.

사용할 도구

image-20221018221314887

  • javascript: 정규식의 / 시작과 끝을 의미

명시적 문자 및 정량자

명시적 문자

  • 있는 그대로의 문자를 말함
// [testcase]
// O hey
// O they
// X Hey
const regex = /hey/

정량자

  • 하나의 문자가 연속으로 몇 번이나 이어질 수 있는지를 결정하는 정량자
? 0 또는 1번
+ 상한 없이 한번 이상을 의미하지만 최소 한번이 필요함
* 0 또는 그 이상의 연속을 의미 (제한 없이)
  • +
// [testcase]
// O hey
// O they
// X Hey
// X h e y
// O heeeeeeeeeeeeey
const regex = /he+y/
  • ?
// [testcase]
// O kittens!
// O kitten!
// X kttenssssss!
// ---------
// 여기에서 ?가 있기에 "s?"로 정규식이 잡힘
// 0 또는 1번의 s를 의미한다.
const regex = /Kittens?!/
  • *
// [testcase]
// O kittens
// O kittens!!!!
// O kittens!
// O kittens!!!!!!!!!!!
// ---------
// 여기에서 ?가 있기에 "!?"로 정규식이 잡힘
// 0 또는 1개이상의 !를 의미한다.
const regex = /Kittens!*/

특수문자

.: newLine을 제외한 모든 문자라는 의미

// [testcase]
// X kittens
// O kittens!!!!
// O kittens!
// O kittens!!!!!!!!!!!
const regex = /Kittens.+/

.을 의도한 것이라면 \.로 문자를 지정하여야 한다.

\ 필요한 특수 문자들(+ ? * . {} [] 9 0 ^ $…)

// [testcase]
// O Kittens........
// X Kittens!!!
const regex = /Kittens\.+/

중괄호 정량자

0 이나 1이 아닌 최소 3번연속의 정량자를 지정할 경우를 생각해 볼 수 있다.

이 경우 중괄호{}를 사용할 수 있다.

{1, 3} between
{3} exactly
{3, } more then
// [testcase]
// O kittens....... (kittens...)
// O kittens.
// O kittens..
const regex = /Kittens\.{1,3}/

// [testcase]
// O kittens....... (kittens...)
// X kittens.
// X kittens..
const regex = /Kittens\.{3}/

// [testcase]
// O kittens....... (kittens.......)
// X kittens.
// X kittens..
const regex = /Kittens\.{3,}/

댓글남기기