F.E/JavaScript

[JavaScript] 정규식에 대해 알아보자

pinomaker 2022. 8. 14. 00:26

정규식(정규 표현식)

문자열에서 특정 문자 조합을 찾기 위한 패턴이다. 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