알고리즘 문제를 풀다보면 다양한 조건의 문자열에서 조작을 해야하는 경우가 많다. 이럴때 마다 정규식을 사용하면 손쉽게 해결할 수 있지만,, 너무나도 어려운 정규식 블로그를 적으면서 차근차근 정리해 나아가보자!
const aaa = /ab+c/
const re = new RegExp('ab+c')
x|y
: x또는 y와 매칭이 되는 경우[xyz]
or [a-c]
: 문자 집합. 포함된 문자 중 하나와 일치합니다. 하이픈을 사용하여 문자 범위를 지정할 수 있지만, 하이픈이 대괄호 안에 포함된 첫 번째 또는 마지막 문자로 나타나면 문자 집합에 일반 문자로 포함되도록 리터럴 하이픈으로 간주됩니다. 문자 집합에 문자 클래스를 포함할 수도 있다. const aaa = /[^a-bc]/
"basic".split(aaa) //[ 'ba', '', 'c' ]
"bacon".match(aaa) //[ 'o', index: 3, input: 'bacon', groups: undefined ]
(x)
: 캡처 그룹: x와 일치하고 일치된 내용을 기억합니다. 예를 들어 /(foo)/는 "foo bar"의 "foo"와 일치하고 기억합니다./n
:여기서 n은 양의 정수입니다. 정규식에서 괄호(왼쪽 괄호 포함)와 일치하는 마지막 하위 문자열에 대한 역참조입니다. 예를 들어 /apple( , )\sorange\1/는 "apple, orange, cherry, peach"의 "apple, orange"와 일치합니다. 다음 표에 완전한 예가 나와 있습니다.[0-9]
. [A-Za-z0-9_]
. ```jsx
//들어오는 데이터 종류
//1S2D*3T , 1D2S#10S , 1D2S0T 등...
const dart = /\d{1,2}[SDT]{1}[*|#]?/g;
```
출처