JavaScript의 match함수

2023. 2. 13. 12:55Algorithm

 

match와 gi

대소문자 구분하지 않고 찾아줌

"aPple".match(/p/gi) //return ["P", "p"]

 

match와 ?

만약 문자열에 찾으려는 단어가 없다면 null이 return된다.

match가 return하는 값의 길이를 구하는 코드를 짰는데

match결과가 null이면 error가 발생한다.

반면, 물음표를 붙여주면 undefined로 처리되어 에러가 발생하지 않는다.

"aPple".match(/g/gi).length;

// TypeError: Cannot read properties of null (reading 'length')
//     at Object.<anonymous> (c:\Users\USER\Algorithm\level2\022js:1:33)
//     at Module._compile (node:internal/modules/cjs/loader:1101:14)
//     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
//     at Module.load (node:internal/modules/cjs/loader:981:32)
//     at Function.Module._load (node:internal/modules/cjs/loader:822:12)
//     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
//     at node:internal/main/run_main_module:17:47
"aPple".match(/g/gi)?.length;

// undefined

 

답안을 보니 오직 정규표현식으로만 해결한 사람이 있었고,

내가 아직 정규표현식에 무지하다는 생각이 들어 공부해보고자 한다!

 

정규표현식

정규표현식은 문자열에서 특정한 조합을 찾기 위한 방법이다.

표현을 슬래쉬에 넣어야 한다 /표현/

 

문자 a: a에 해당하는 것

문자집합 [a-z] [xyz] : xyz 중 하나에 해당하는 것

부정문자집합 [^a-z] [^xyz] : zyx 중 모두에 해당하지 않는 것

캡처 그룹 (apple) : 위의 집합은 집합 속 문자 하나에 해당하는 것을, 캡처 그룹은 이 문자열에 해당하는 것을

특수 문자 *: *직전 항목의 0번 이상 반복에 해당하는 것 (ab*c라면 abbbbc, ac, abbbbbbc 모두 해당함)

 

백슬래쉬를 활용한 정규표현식

[0-9] \d
[A-za-z0-9] \w
공백, 탭, 양식 공급, 줄 바꿈 및
기타 유니코드 공백
\s
가로탭 \t

 

정규표현식의 세계는 무궁무진하기 때문에 새로운 것을 추가할 계획이다!