Javascript 정규식 (Regex)
1. 기본 사용법
String의 함수
: String.function(regex)
함수명 |
기능 |
match(regex) |
매치된 문자열 반환 (g option 배열 반환) |
replace(regex, replace) |
매치된 부분 변경 |
search(regex) |
매치된 문자열의 시작 index 반환 |
split(regex[, limit]) |
regex를 기분으로 String을 쪼개서 반환 |
Regex의 함수
: regex.function(String)
함수명 | 기능 |
exec(String) | 일치되는 첫반째 문자열 반환 |
test(String) | 매치 여부를 boolean 값으로 반환 |
* exec에서는 g 플래그가 먹지 않는다.
** test에서는 g 플래그가 무의미 하다
2. 플래그
i: ignore case => 대소문자 무시
g: global => 모든 문자열을 배열로 반환
m: multi line => 줄바꿈 무시
3. OR 조건 ( | )
/c|bc|a|abc/.exec("abc") => a
반환 순서
- 일치된 문자의 index 값
- index 값이 같을 경우 정규식의 순서
4. Wild 카드, 길이
문자를 대신 할 수 있는 특수 문자 및 길이 지정
패턴 |
설명 |
예 |
결과값 | test 결과 |
. |
한글자 대체 |
'sports'.match(/s./) |
sp | true |
+ |
한글자 이상 |
'sssports'.match(/s+/) 'sports'.match(/s.+/) 'port'.match(/s+/) |
ss sports null | true true false |
* |
없거나 하나 이상 |
'sssports'.match(/s*/) 'sssports'.match(/s.*/) 'port'.match(/s*/) |
sss sssports "" | true true true |
? |
앞의 글자가 없거나 하나만 |
'sport'.match(/spa?/) 'sport'.match(/spo?/) |
sp spo | true true |
{숫자} |
수에 매치 |
' aaaa'.match(/a{2}/) 'asas'.match(/as{2}/) |
aa asas | true true |
{숫자,} |
이상 |
'aaaa'.match(/a{2,}/) |
aaaa | true |
{숫자1, 숫자2} |
범위 |
'aaaa'.match(/a{2,3}/) |
aaa | true |
+? | 한번 매치 (최소) | 'aaaa'.match(/a+?/) | a | true |
*? | 최소 매치 (최소) | 'aaaa'.match(/aa*?/) | a | true |
{숫자, 숫자}? | 범위 무시 (최소) | 'aaaa'.match(/a{2,3}?/) | aa | true |
* 수량 뒤쪽에 ? 붙이면 매치되는 값들 중 길이가 최소인 것을 선택
5. 위치 지정
startWith: ^
* /^a/ => a로시잓하는
endsWith: $
* /a$/ => a로 끝나는
6. 문자 매치
패턴 |
설명 |
예 |
결과값 |
|
[] |
글자 단위 인식 [ab] = /a|b/ |
'abc'.match(/[ab]/) 'bac'.match(/[ab]/) 'abc'.match(/[ab]/g) 'abc'.match(/[ab]/g) |
a b [a, b] [a, b] |
|
[패턴문자] |
+ . * ? 등 패턴 문자를 문자로 인식 |
'+aa'. match(/[+]/) |
+ |
|
[-] |
범위 1-9 |
'123456789'.match(/[2-7]/g) |
["2","3","4","5","6","7"] |
|
[^] |
아닌 문자 |
'asdf'.match(/[^s]/g) |
["a","d","g"] |
|
* - 사용시 2- => 2와 -
7.
* 이스케이프 시퀀스, 유니코드 사용 가능
\t 탭
\n 개행
\b backspace 또는 63개 문자
\B 63개 이외 문자
\s 보이지 않는 문자