정규식(정규 표현식)
문자열에서 특정 문자 조합을 찾기 위한 패턴이다. JavaScript에서는 정규식도 객체이기에, RegExp의 exec 등의 메서드를 사용할 수 있다.
정규 표현식 만들기
const re1 = /ab+c/
const re2 = new RegExp('ab+c')
//정규식은 // 안에 찾고자 하는 패턴을 작성하고 여러가지 옵션을 준다.
Groups and ranges
| 는 또는을 의미한다.
const reg = /HI|HELLO/ // HI or HELLO
() 는 그룹을 의미한다.
const reg1 = /(HI|HELLO) | (BYE)/ // HI거나 HEllO를 찾거나 혹은 BYE
const reg2 = /gr(e|a)y/ //grey 혹은 gray 탐색
(?:) 찾지만, 그룹을 지정하진 않는다.
const reg2 = /gr(?:e|a)y/ //grey 혹은 gray 탐색하지만 그룹으로 기억하진 않는다.
[], [^] 는 괄호 안의 문자 중 아무거나 들어오든 찾는다.
const reg1 = /[abcd]/ //a,b,c,d든 중 하나라도 탐색
const reg2 = /[a-zA-Z0-9]/ //a~z, A~Z, 0~9이 들어오는 것을 탐색
const reg3 = /[^a-zA-Z0-9]/ //이것들을 제외한 것을 탐색
Quantifiers
? 없거나 있거나
const reg = /gra?y/ //a가 있거나 없거나 -> gry or gray
* 없거나 있거나 많거나
const reg = /gra*y/ //a가 있거나 없거나 많거나 -> gry or gray or 많음
+ 하나거나 많거나
const reg = /gra+y/ //a가 있거나 많거나 -> gray, graay, graaay....
{min, max} 최소, 최대
const reg1 = /gra{1}y/ // 최소 a가 한 개
const reg2 = /gra{1, 5}y/ // 최소 a가 한 개, 최대 5개
전화번호 정규식
전화번호 01012345678를 010-6305-7848로 변경
const number1 = "01012345678"
const number2 = number.replace.replace(/^(\d{0,3})(\d{0,4})(\d{0,4})$/g, '$1-$2-$3')
const number3 = number2.replace(/[^0-9]/g, '')
//number1 : 전화번호
//number2 : -를 넣은 전화 번호
//number3 : 숫자가 아닌 것을 없앤 전화번호
전화번호가 000-0000-0000 형식이 맞는 지 검사
const number1 = '010-1234-5678'
const number2 = '01012345678'
const patten = /(\d{3})-(\d{4})-(\d{4})$/
console.log(patten.test(number1)) // true
console.log(patten.test(number2)) // false
이메일 정규식
이메일에 @가 들어가는 지 확인
const email = 'pino@gmail.com'
const patten = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])/
console.log(patten.test(email)) //true
'F.E > JavaScript' 카테고리의 다른 글
[JavaScript] Map, Filter, Reduce (0) | 2022.08.19 |
---|---|
[JavaScript] 이터러블(interable), 이터레이터(iterator), 제네레이터(Generator) (0) | 2022.08.19 |
[JavaScript] Symbol(심볼) (0) | 2022.08.09 |
[JavaScript] 리스트 순회, for문, for of문, for in문, for each문 (0) | 2022.08.09 |
[JavaScript] JS 표준 내장 객체, Map (0) | 2022.06.11 |