공부중에 정규식이 나와서 정리 해봤습니다.

 

전체적인 내용이 아닙니다.

export const formatNumber = (num) => {
  // 숫자가 3자리 이상 있을경우 , 를 붙이기
  num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
};

 

1. \d 는 Digit, 0~9까지의 숫자를 매치해줍니다.

 

2. \w 는 모든 문자(숫자포함) 매치해줍니다.

 

3. {num}  :  일치하는 num의 개수만큼 매칭

    예시 : \d{4}  숫자중 4개씩 매칭, 4개가 넘어갈경우 앞에서부터 4개 ( 예시 12345)

\w도 똑같습니다.

 

 

4. {num1, num2}  : num1 부터 num2 까지의 개수만큼 매칭

3개 4개 5개를 찾아 매칭해줍니다.

 

특정 단어로 시작하며 뒤에 숫자가 2~4개 붙은경우

특정 단어로 시작하며 (숫자,문자)가 2~4개 붙은경우

 

5. Negative lookahead

\d(숫자)뒤에 (?!px)  px가 붙지 않은 숫자!

 

6. Positive lookahead

\d(숫자)뒤에 (?=px)  px가 붙은 숫자!

7. 섞어서 사용해보기

 

 7-1 \d{3} 숫자 3개를 찾는데 ?!\d 뒤에 숫자가 없는 경우 

 

 

7-2 뒤에 숫자가없는 3개의 숫자를 찾아라 (여러개)

 (위와 거의 같지만 가운대에 +가 있습니다.)

 +를 사용해서 1개 이상을 매칭시키려고함(여러개를 찾고자 할 때)

 1234567890 처럼 붙어있어도 1 234 567 890 과 같이 잡혀있습니다.

 (추측이지만, 890 을 찾고 그걸 제외한 1234567 에서 567을 찾고 또 제외하고 1234에서 234를 찾는것 같습니다)

 즉 이미 매칭된 것은 제외하고 찾는 것 같습니다.

 

 

 7-3  뒤에 숫자가 없는 3자리숫자의  의 숫자

  7-1의 (\d{3})(?!\d)은 뒤에 숫자가 없는 3개의 숫자 (890) , 이걸 이용해서

   \d(?=(\d{3})(?!\d)) , 그 숫자를 뒤에 포함한 숫자 \d(?=890)을 뒤에 둔 숫자

 

 

 

 

위의 지문을 다 이해하고 나서 보면

export const formatNumber = (num) => {
  // 숫자가 3자리 이상 있을경우 , 를 붙이기
  num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
};

\d 숫자를 찾는다

?= 뒤의 조건을 만족하는걸 

(\d{3}) 숫자가3개

+ 여러개를 찾는다

(?!\d) 숫자가 없다

/g 전체에서

 

합쳐보면

\d(?=(\d{3})+(?!\d)) 뒤에 숫자가 없는 3개의 숫자의 앞의 숫자 (말이 이상하다..) 를 여러개 찾는다.

 

내가 정리 해놓고도 이상하다..

 

뭐,.. 나만 이해하면 된 건가

+ Recent posts