Javascript 와 정규 표현식 패턴
자바스크립트를 처음부터 다시 공부해보려고 한다.
정규 표현식 을 생성할때 사용하는 패턴을 정리해보려고한다.
문자열 일치
대소문자를 구분한다. 만약 ignoreCase 가 true 로 설정되어 있으면 대소문자를 구분하지 않는다.
any 값 일치
.
은 모든 단일 문자에 대응되지만, \n\r 개행문자는 대응하지 못한다.
특수 문자 일치
\
다음 으로 오는 특수문자는 특정 행동으로 해석하지 않고 문자 그대로 처리하도록 한다.
그룹 일치
[]
안에 들어가있는 값을 대응한다. 상황에 따라 특수문자를 다르게 해석한다.
만약 앞에 ^
이 들어가 있다면, []
에 없는 문자와 대응한다.
숫자 일치
\d
는 숫자 문자인 [0–9]
에 대응된다.
\D
는 숫자 문자가 아닌 [^0-9]
에 대응된다.
문자 일치
\s
는 공백, 탭, 개행 문자 에 대응된다.
\S
는 공백 문자가 아닌 문자에 대응된다.
\w
는 숫자, 소대문자, 밑줄을 포함한 [A-Za-z0–9_]
에 대응된다.
\W
는 숫자, 소대문자, 밑줄이 아닌 문자에 [^A-Za-z0–9_]
대응된다.
OR
|
왼쪽과 오른쪽 의 문자열에 대응된다.
시작과 끝문자 일치
첫번째로 입력된 ^
은 다음 문자로 시작 되었는지를 의미한다.
마지막 전에 입력된 $
는 다음 문자로 끝 났는지를 의미한다.
여러문자
{n} 앞의 문자에 n 번 대응 한다.
{n,m} 앞의 문자에 최소 n 에서 최대 m 번 대응 한다.
{n,} 앞의 문자에 최소 n 에서 무한대 번 대응 한다.
?
앞의 문자의 0, 1회 {0,1} 에 대응한다.
*
앞 문자의 0번 이상 {0,} 에 대응한다.
+
앞의 문자의 1회 이상 {1,} 에 대응한다.
정규식 수량자
*?
, +?
, {n,}?
문자가 최소로 일치하는 부분만을 찾는다.
*
만 있다면 일치하는 가장 많은 문자열을 찾지만, ?
와 함께 있다면 일치하는 가장 적은 문자열을 찾는다.
단어 경계
\b
은 단어 문자가 아닌 값에 대응된다.
\B
은 단어 문자인 값에 대응된다.
단어문자는 [a-zA-Z0–9_]
이다.
Capturing parentheses
()
그룹으로 묶고 정규 표현식을 사용할 수 있다.
()
의 내용을 기억해두었다가 다시 쓸 수 있다.
정규표현식 내에서 쓸경우 \숫자
형태로 쓰면되며,
replace 메소드 같은 곳에서는 $숫자
형태로 쓰면된다.
()
순서대로 숫자가 매겨지며, exec 메서드로 반환할 경우 index 1부터 이후 값들이 포함되어 있다.
non-capturing parentheses
(?:)
로 사용하면 그룹을 만들지만 기억해두지 않는다.
lookahead
(?=)
로 사용하면 앞의 문자에 ()
가 있는 앞 문자에 대응된다.
negated lookahead
(?!)
로 사용하면 앞의 문자에 ()
가 없는 앞 문자에 대응된다.