정규표현식

`·2022년 2월 15일
0

정규표현식

문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다

^ 문장의 시작
$ 문장의 끝
. 모든 문자
\ 원래기능 탈피
+ 한개 이상
? 없거나 한개
w{3] 문자 3개
\d 숫자 하나
\d+ or [0-9]+ 숫자 하나 이상
[a-zA-Z0-1] 대소문자 숫자

^x 문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다.
x$ 문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다.
.x 임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미한다.
x+ 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미한다.
x? 존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다.
x* 반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨을 의미한다.
x|y or 를 표현하며 x 또는 y 문자가 존재함을 의미한다.
(x) 그룹을 표현하며 x 를 그룹으로 처리함을 의미한다.
(x)(y) 그룹들의 집합을 표현하며 앞에서 부터 순서대로 번호를 부여하여 관리하고 x, y 는 각 그룹의 데이터로 관리된다.
(x)(?:y) 그룹들의 집합에 대한 예외를 표현하며 그룹 집합으로 관리되지 않음을 의미한다.
x{n} 반복을 표현하며 x 문자가 n번 반복됨을 의미한다.
x{n,} 반복을 표현하며 x 문자가 n번 이상 반복됨을 의미한다.
x{n,m} 반복을 표현하며 x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨을 의미한다.

[xy] 문자선택을 표현하며 x 와 y 중에 하나를 의미한다.
[^xy] not 을 표현하며 x 및 y 를 제외한 문자를 의미한다.
[x-z] range를 표현하며 x ~ z 사이의 문자를 의미한다.
\^ escape 를 표현하며 ^ 를 문자로 사용함을 의미한다.
\b wordboundary를 표현하며 문자와 공백사이의 문자를 의미한다.
\B non word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미한다.
\d digit를 표현하며 숫자를 의미한다.
\D non digit 를 표현하며 숫자가 아닌 것을 의미한다.
\s space 를 표현하며 공백 문자를 의미한다.
\S non space를 표현하며 공백 문자가 아닌 것을 의미한다.
\t tab 을 표현하며 탭 문자를 의미한다.
\v vertical tab을 표현하며 수직 탭(?) 문자를 의미한다.
\w word를 표현하며 알파벳 + 숫자 + 중의 한 문자임을 의미한다.
\W non word를 표현하며 알파벳 + 숫자 +
가 아닌 문자를 의미한다.

exec 정규식.exec(문자열) 일치하는 하나의 정보(Array) 반환
test 정규식.test(문자열) 일치 여부(Boolean) 반환
match 문자열.match(정규식) 일치하는 문자열의 배열(Array) 반환
search 문자열.search(정규식) 일치하는 문자열의 인덱스(Number) 반환
replace 문자열.replace(정규식,대체문자) 일치하는 문자열을 대체하고 대체된 문자열(String) 반환
split 문자열.split(정규식) 일치하는 문자열을 분할하여 배열(Array)로 반환
toString 생성자_정규식.toString() 생성자 함수 방식의 정규식을 리터럴 방식의 문자열(String)로 반환

g 모든 문자와 여러 줄 일치(global)
i 영어 대소문자를 구분 않고 일치(insensitive, ignore case)
m 여러 줄 일치(multi line)
u 유니코드(unicode)
y lastIndex 속성으로 지정된 인덱스에서만 1회 일치(sticky)

/조건/.test() : ()안이 조건에 맞는지 검사, 조건에 맞는게 하나라도 있으면 true
\w: 문자 하나
\w+ or [A-Z]+: 문자 하나 이상

'/^010-\d{3,4}-\d{4}$/.test("010-5825-2356")'
// true

'/^\w+@\w+.\w+$/.test("aaa@bbb.com")'
// true

'/^010-\d{3,4}-\d{4}$/.test("010-5825-2356")'
// true

출처: https://hamait.tistory.com/342 [HAMA 블로그]

0개의 댓글