728x90
반응형
정규표현식 (regular expression)
- 정규표현식 문자열에서 특정문자를 찾아내는 도구
- 하나의 언어
- 자바스크립트 뿐 아니라 다른 언어에서도 다양하게 활용됨
- 문자열을 검색하고 대체하는데 사용하는 형식 언어패턴
정규표현식 문법
1. 그룹과 범위
문자 | 의미 |
| | 또는 |
() | 그룹 |
[] | 문자셋 |
[^] | 부정문자셋, 괄호안의 문자가 아닐때 |
2.빈도수
문자 | 의미 |
? | 0또는 1 |
* | 0또는 1이상 |
+ | 1이상 |
{n} | n번 반복 |
{min, } | 최소 |
{min, max} | 최소, 최대 |
3. 문자
문자 | 의미 |
. | 어떤글자(줄바꿈 문자 제외) |
\d | 숫자 |
\D | 숫자아님 |
\w | 문자 |
\W | 문자아님 |
\s | 공백 |
\S | 공백아님 |
4. 경계영역
문자 | 의미 |
\b | 단어경계 |
\B | 단어경계가 아님 |
^ | 문장의 시작 |
$ | 문장의 끝 |
5. 추가
문자 | 의미 |
g | 검색범위를 전역으로 확장 |
i | 대소문자를 구분하지 않음 |
gi | 검색 범위를 전역으로 확대하여 대소문자를 구분하지 않음 |
m | 여러줄을 동시에 매칭함 |
6. 자주사용하는 구문
내용 | 문자 |
숫자만 | ^[0-9]$ |
영문자만 | ^[a-zA-Z]$ |
한글만 | ^[가-힣]$ |
영어 & 숫자만 | ^[a-zA-Z0-9]$ |
^[a-zA-Z0-9]+@[a-zA-Z0-9]+$ | |
휴대폰 | ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$ |
일반전화 | ^\d{2,3} - \d{3,4} - \d{4}$ |
주민등록번호 | \d{6} - [1-4]\d{6} |
IP 주소 | ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3}) |
숫자 1000단위 콤마찍기 | 변수명.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "," |
replace()참고 주소
2022.12.11 - [javascript/javascript 내장객체] - [javascript]String 객체
toString()참고 주소
2022.12.13 - [javascript/javascript 내장객체] - [javascript]Number 객체
정규표현식 연습 참고사이트
자바스크립트를 활용한 정규표현식
1.정규표현식 객체 생성하기
1) 생성자 함수 방식
const pattern = new RegExp("abc");
2)리터럴 방식
const pattern = /abc/gm;
2.정규표현식 객체나 문자열이 사용하는 메소드
추출(해당패턴의 문자열만 추출)
테스트(해당패턴이 있는지 확인)
변환(해당패턴의 문자열을 다른 문자열로 변환)
1) exec()메소드
패턴에 해당되는 문자열이 있으면 그 값을 배열로 반환
구문)
정규식.exec(문자열)
ex)
let pattern = /a/;
pattern.exec("abcdef");
결과)
2) test()메소드
패턴에 해당되는 문자열이 있으면 true 없으면 false를 리턴
구문)
정규식.test("문자열")
예시)
let pattern =/a/;
pattern.test("abcdef");
결과)
3) match()메소드
exec()비슷하다. 정규식에 해당하는 문자열을 배열로 반환
구문)
문자열.match(정규식)
예시)
let pattern = /a/
"abcdef".match(pattern)
// 검색 범위를 전역으로 바꿔주면 배열로 리턴해준다
let pattern = /a/g
"abcdef".match(pattern)
// a를 제외한 나머지 값을 배열로 리턴 받을려면 부정 문자셋인 [^]추가
let pattern = /[^a]/g
"abcdef".match(pattern)
//배열로 리턴받고 쪼개진 문자들을 합칠려면 +
let pattern = /[^a]+/g
"abcdef".match(pattern)
결과)
4) search()메소드
정규표현식에 해당되는 문자열이 있으면 index를 반환 없으면 -1을 반환
구문)
문자열.search(정규식)
let pattern = /a/
"dfefeadfdf".search(pattern);
결과)
5) replace()메소드
문자열에서 패턴에 해당하는 문자를 대체문자로 변경해서 리턴
구문)
문자열.replace(정규식, 대체문자)
예시)
let pattern = /a/
"abcdef".replace(pattern,"A");
결과)
6) split()메소드
여러가지 조건으로 문자열을 쪼개어 배열로 리턴
구문)
문자열.split(정규식)
예시)
let str = "Hello world, Man";
let pattern = / | ,/;
str.split(pattern);
결과)
6) startsWith()메소드
문자열이 특정 문자열로 시작하는지 확인한다, IE는 Edge부터 지원
구문)
문자열.startsWith(searchString, length);
- searchString : 검색할 문자열로 필수 요소이다. 대소문자를 구분한다.
- length : 문자열 중 어디까지 검색할지 정한다. 선택 요소로, 값이 없으면 전체 문자열을 대상으로 한다.
예시)
'abcde'.startsWith( 'a' );
//abcde가 a로 시작하는지 검사한다. a로 시작하므로 true를 반환한다.
'abcde'.startsWith( 'a', 1 )
//bcde가 a로 시작하는지 검사한다. a로 시작하지 않으므로 false를 반환한다.
'abcde'.startsWith( 'A' )
//abcde가 A로 시작하는지 검사한다. 대소문자를 구분하므로 false를 반환한다.
6) includes()메소드
문자열 포함 여부를 boolean으로 리턴
구문)
문자열.includes("문자열");
예시)
str1 = "abc";
str2 = "aabcc";
str2.includes(str1);
//true
**추가로 참고할거
대소문자 구별하지 않고 문자열 비교
'i' 는 위에 5번 추가 참고할 것
let str1 = "AbCdEfG"
let test1 = "aBc"
let str2 = "aaAA"
let test2 = "aaaaa"
///////////////// match() //////////////////////
let check = str1.match(new RegExp(test1, "i"))
//["AbC"]
let check2 = str1.match(new RegExp(test1, "i"))
//null
///////////////// serch() //////////////////////
let check = str1.search(new RegExp(test1, "i"))
//0
let check2 = str1.search(new RegExp(test1, "i"))
//-1
728x90
반응형
'javascript > javascript 고급문법' 카테고리의 다른 글
[javascript] this키워드 (0) | 2023.01.23 |
---|---|
[javascript] Modules (0) | 2023.01.11 |
[javascript]구조분해할당과 spread,rest (0) | 2023.01.05 |
[javascript]BOM(Browser Object Model) (0) | 2022.12.14 |
[javascript] class (0) | 2022.11.30 |
댓글