Regular expression, 줄여서 RegExp라고 부른다.
<정규표현식 참고문헌>
MDN의 정규표현식 - 정규표현식-MDN
A guide to JS RegExp - RegEx Tutorial
RegExp testing tools - RegEx Testing
리터럴 패턴
let regExp = /hello/; regExp.test('hello world!'); //true
생성자 함수 호출 패턴
let regExp = new RegExp('hello'); regExp.test('hello world!'); //true
<RegExp 객체의 메소드>
exec()
exec는 execution(실행) 의 줄임말로, 검색 대상에 찾고자하는 문자열이 있다면 해당 문자열에 일치하는 문자열의 정보를 배열로 반환한다. 없다면 null을 반환한다.let regExp1 = /hello/; let regExp2 = /hi/; regExp1.exec('hello world!'); // ["hello", index: 0, input: "hello world", groups: undefined] regExp2.exec('hello world!'); // null
test()
test는 검색 대상에 찾고자하는 문자열의 유무를 boolean값으로 반환한다.let regExp1 = /hello/; let regExp2 = /hi/; regExp1.test('hello world!'); //true regExp1.test('hello world!'); //false
<String 객체의 메소드>
match()
exec()메소드와 비슷한 기능을 한다. 다만, 검색 대상과 찾고자하는 문자열의 입력위치가 반대이다.let regExp1 = /hello/; let regExp2 = /hi/; let str = 'hello world!'; str.match(regExp1); // ["hello", index: 0, input: "hello world!", groups: undefined] str.match(regExp2); // null
replace()
replace은 '검색 후 수정'을 수행한다. 첫번째 인자로 정규식을 받고, 두번째 치환할 문자를 받는다. 검색 대상에 수정 할 문자를 찾은 후 수정하고, 새로운 문자열을 반환한다.let regExp = /h/; let str = 'hello world!'; str.replace(regExp, 'H'); // "Hello world!"
search()
search는 검색 대상에 찾고자 문자열이 있다면 일치하는 문자열의 첫번째 인덱스 값을 반환한다. 일치하는 문자열이 없다면 -1을 반환한다.let str = 'hello world!'; str.search(/hello/); // 0 str.search(/world/); // 6 str.search(/hi/); // -1
정규식은 뒤에 flag를 설정해 줄 수 있는데, 추가적인 검색 옵션의 역할을 한다. flag는 각자 혹은 함께 순서의 상관없이 사용이 가능하다. 주로 사용하는 3가지로 i, g
플레그가 있다.
i
대소문자를 구분하지 않는다.
let regExp1 = /h/; let regExp2 = /h/i; let str = 'Hello world!'; regExp1.test(str); // false regExp2.test(str); // true
g
global의 약자로, 검색 대상의 일치하는 모든 것을 반환한다.
let regExp1 = /l/; let regExp2 = /l/g; let str = 'Hello world!'; str.match(regExp1); // ["l", index: 2, input: "Hello world!", groups: undefined] str.match(regExp2); // ["l", "l", "l"]
정규식 패턴 | 설명 |
---|---|
^ | 줄(Line)의 시작에서 일치 /^abc/ |
$ | 줄(Line)의 끝에서 일치 /xyz$/ |
. | (특수기호, 띄어쓰기를 포함한) 임의의 한 문자 |
a|b | a or b 와 일치, 인덱스가 작은 것을 우선 반환 |
* | 0회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {0,} 와 동일 |
*? | 0회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일 |
+ | 1회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {1,} 와 동일 |
+? | 1회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일 |
{3} | 숫자 3개 연속 일치 |
{3,} | 3개 이상 연속 일치 |
{3, 5} | 3개 이상 5개 이하 연속 일치 |
() | 캡쳐(capture)할 그룹 |
[a-z] | a부터 z 사이의 문자 구간에 일치(영어 소문자) |
[A-Z] | A부터 Z 사이의 문자 구간에 일치(영어 대문자) |
[0-9] | 0부터 9 사이의 문자 구간에 일치(숫자) |
\(역슬래쉬) | escape 문자. 특수 기호 앞에 \를 붙이면 정규식 패턴이 아닌, 기호 자체로 인식 |
\d | 숫자를 검색함. /[0-9]/와 동일 |
\D | 숫자가 아닌 문자를 검색함. /[^0-9]/와 동일 |
\w | 영어대소문자, 숫자, (underscore)를 검색함. /[A-Za-z0-9]/ 와 동일 |
\W | 영어대소문자, 숫자, (underscore)가 아닌 문자를 검색함. /[^A-Za-z0-9]/ 와 동일 |
[^] | []안의 문자열 앞에 ^이 쓰이면, []안에 없는 문자를 검색함 |