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
를 사용한다.