정규표현식

Park Bumsoo·2022년 4월 16일
0

정규표현식

for() / if() 등 조건문을 좀더 간결하게 쓰기위해 쓰는 식으로
특정 조건을 보다 편하게 만들거나 이메일, 전화번호등 특정양식에 대한 검증을 위해 사용하며.

리액트의 경우엔 다양한 validation 관련 라이브러리 내에서
Regex형태의 사용요소가 필요한 경우도 존재한다

	/apple/.test("apple")
    
	//true
    
    /apple/.test("app")
    
    //false
    
    /a@a.com/.test("a@a.com")
	
    //true
    
    /a@a.com/.test("b@a.com")
	//false

test를 사용하여 apple가 있는지를 검증하였고
boolern 값을 통해 여부를 알려줬다.

/\w@a.com/.test("w@a.com")

//true

/\w@a.com/.test("a@a.com")

//true

/\w@a.com/.test("b@a.com")

//true

/\w@a.com/.test("2@a.com")

//true

같은 경우엔 모든값이 true로 나오게 되는데 이는
\w가 모든 단어의 문자or숫자를 의미 하기 때문이다.
\는 해당 문자를 탈피(탈출)를 의미한다.

따라서

/\w@a.com/.test("wasdfafasdf@a.com")

//true

이또한 ture가 된다.

/^\w@a.com$/.test("wasdfafasdf@a.com")
// false

위 경우엔 시작을 ^ 끝을 $로 표현했으며
test()의 내용과 일치하지 않기에 false가 반환됬고.

/^\w\w\w\w\w\w\w\w\w\w@a.com$/.test("wasdfafasdf@a.com")
//true

/^\w+@a.com$/.test("wasdfafasdf@a.com")
//true

위처럼 \w를 test의 단어만큼 쓰거나 단어가 2개이상일땐
+를 사용해서 나타내며

/^\w?@a.com$/.test("@a.com")
// true

단어가 없거나 한개일 때는 ?를 사용하고

/^\w*@a.com$/.test("@a.com")
// true

이 모든 경우를 나타낼 때는 *를 사용한다.

/^\w+@\w.com$/.test("asdfasdf@a.com")

// true

따라서 이메일을 나타내는 정규표현식은

/^\w+@\w+\.\w+$/.test("asdfasdf@a.com")
// true

// ^\w+@  === 시작 + asdfasdf@ 부분이되며
// \w+ === a 부분 (길게쓰여도 상관없다.)
// \w+$ === .뒤인 com부분 + 끝 이다. 

이 된다.

숫자의 경우에는

/^\d+-1234-5678$/.test("010-1234-5678")
true

처럼d를 사용해 주면 w와 다르게 숫자만 입력이 가능해지게 된다.

/^\d{3}-1234-5678$/.test("010-1234-5678")
// true

처럼 작성시 {3}은 3글자를 의미하므로 3글자가 되야
true가 된다.

따라서 휴대폰 번호의 최종적 정규식은

/^\d{3}-\d{3,4}-\d{4}$/.test("010-1234-5678")
// true

가 된다.

또한 문자만을 의미하는 것은 없기에 그 경우에는
[a-zA-Z]*를 사용한다.

띄어쓰기의 경우에는 \s를 사용한다.

profile
프론트엔드 주니어 개발자(React, Next.js)

0개의 댓글