JavaScript
RegExp
Hun-bot
2022. 6. 29. 00:08
728x90
반응형
Number(28장)~Data(30장)까지 생략
RegExp(정규 표현식)
일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어(formal language)
정규 표현식은 문자열을 대상으로 패턴 매칭 기능을 제공한다.
패턴 매칭 기능 : 특정 패턴과 일치하는지 문자열을 검색하거나 추출 또는 치환할 수 있는 기능을 말한다
const tel='010-1234-567팔'
const regExp=/^\d{3}-\d{4}-\d{4}$/;
regExp.test(tel) // false
const target='Is this all there is?'
//패턴 is
//플래그 : i => 대소문자를 구별하지 않고 검색한다
방식1 : const regexp=/is/i
방식2 : cont regexp=new RegExp(/is/i)
// RegExp(/is/,'i')
// RegExp('is','i')
regexp.test(target) //true
동적으로 RegExp 객체 생성
const count=(str,char) => (str.match(new RegExp(char,'gi')) ?? []).length;
count('Is this all there is?','is') // 3
플래그
플래그 | 의미 | 설명 |
i | Ignore case | 대소문자를 구별하지 않고 패턴을 검색한다 |
g | Global | 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색한다 |
m | Multi line | 문자열의 행이 바뀌더라도 패턴 검색을 계속한다 |
const target='Is this all there is?'
//target 문자열에서 is 문자열을 대소문자 구별해서 한번만 검색
target.match(/is/)
//is 문자열 대소문자 구별 X
target.match(/is/i)
//is 문자열 대소문자 구별해서 전역 검색
target.match(/is/g)
//is 문자열 대소문자 구별해서 X 전역 검색
target.match(/is/ig)
패턴
공통된 동작
정규 표현식 사용시 묶어주지 않으면 단일로 검색함
아래 or 검색에서 첫번째 regExp에선 "A", "AA" 처럼 되는것이 아닌 "A" ,"A", "A"로 나옴
- 문자열 검색(위 예제) / 임의 문자열 검색
const target='Is this all there is?'
const regExp=/.../g;
target.match(regExp) //['Is ', 'thi', 's a', 'll ', 'the', 're ', 'is?']
- 반복 검색
const target='A AA B BB Aa Bb AAA'
//A가 최소1번 최대2번 반복되는 문자열을 전역 검색한다 {m,n}
const regExp=/A{1,2}/g
//A가 2번 반복되는 문자열을 전역검색 {n}
const regExp=/A{2}/g
// {n,}은 최소 n번 이상 반복되는 문자열 전역검색
const regExp=/A{n,}/g
// +는 A가 한번이상 반복되는 문자열 전역 검색
const regExp=/A+/g
// ?는 {0,1} 최대 한 번(0번 포함)이상 반복되는 문자열
const regExp=/A?a/g [Aa] 찾음
- OR 검색
const target='A AA B BB Aa Bb AAA 123 14,185 Za za kkqz dqsm qzz zwa'
// | 는 or의 의미
const regExp=/A|B/g
// [] 내의 문자는 or로 동작, 이 or로 동작하는 패턴에 +를 붙여 한번이상 반복
const regExp=/[AB]+/g;
// [] 내에 - 는 범위 지정
const regExp=/[A-Z]+/g;
// 대문자A~Z 소문자a~z까지 모두 검색
const regExp=/[A-Za-z]+/g;
// 숫자 검색
const regExp=/[0-9]+/g;
// 쉼표같이 문자열이 사이에 껴있을경우
// \d는 숫자 \D는 문자
const regExp=/[0-9,]+/g; === const regExp=/[\d,]+/g;
// \w는 알파벳,숫자,언더스코어 \W는 \w를 제외한 문자
- NOT검색
const regExp=/[^0-9]+/g;
- 시작/마지막 위치로 검색
시작은 동일하게 ^를 사용하지만 []이게 없다
const regExp=/^com/;
끝
const regExp=/com$/;
자주 쓰는 정규 표현식
const url='https://example.com'
/^https?:\/\//.test(url) //true
동일한 동작
/^(http|https):\/\//.test(url)
const fileName='index.html'
/html$/.test(fileName) // true
const target='12345'
/^\d+$/.test(target) //true
이스케이프 문자
/s 공백 검사
const t=' Hi!'
/^[/s]+/.test(t)
id로 사용가능한지 검사
cosnt id='12dcn2'
알파벳 대소문자 또는 숫자로 시작하고 끝나면 4~10자리인가?
/^[A-Za-z0-9]{4,10}$/.test(id)
메일형식,핸드폰번호,특수문자가 포함됬는가도 확인할 수 있다
728x90
반응형