-
자바스크립트 정규식 사용법JAVASCRIPT/Javascript 2022. 9. 14. 11:45
정규식은 검색해서 필요한 것만 찾아서 사용하면 되지만
모르고 사용하는 것은 에러에 대한 대응이 쉽지 않을 수 있기 때문에
정규식이 어떻게 이루어졌는지 한번쯤은 파악해두고 필요할 때 검색해서 사용하는 것이 좋습니다.
문자를 검사하는 가장 쉬운 방법에는 '문자'.includes('찾을 단어')가 있습니다.
하지만 그 문자에
- 한글이 있는지
- 영어가 있는지
- A로 끝나는지
- 마침표 다음에 영어가 있는지
- 등등...
이런건 includes()만으로 검사하기 어렵습니다.
이럴때 사용하는 것이 '정규식'을 이용한 test 검증입니다!
정규표현식(regular expression)
정규식 : 문자를 검사하고 싶을 때 사용하는 식
자바스크립트로 정규식을 어떻게 표현하냐면
/abc/
이게 끝입니다.
검색해서 찾아보는 정규식은 복잡하게 생겼다는 인상이 있는데 알고 보면 아주 쉽습니다.
abc라는 단어가 있니?라고 물어볼 준비가 된 것입니다.
만약 abcde라는 (문자)에 abc(찾을 단어)라는 단어가 있는지 검사해보고 싶다면,
/abc/.test('abcdef')
/정규식/.test(정규식으로 검사해볼문자) 쓰면 됩니다.
(정규식으로 검사해볼문자)가 들어있으면 true를, 없으면 false를 남깁니다.
정규식 문법
[ ] 기호를 이용해서 문자 범위를 지정할 수 있습니다.
[a-z] 는 a부터 z까지 아무문자 하나를 의미합니다.
/[a-d]/.test('aefg') //true /[가-다]/.test('다라마바') //true
- a부터 d까지의 아무 문자 하나가 저기(aefg) 있는지 검사
- 가부터 다까지 아무 문자 하나가 저기(다라마바) 있는지 검사
영문 정규식, 한글 정규식
/[a-zA-Z]/.test('반가워요') //false /[ㄱ-ㅎ가-힣ㅏ-ㅣ]/.test('반가워요') //true
- [a-zA-Z] 이건 아무 알파벳(대소문자 상관없이) 하나라는 뜻입니다.
- [ㄱ-ㅎ가-힣ㅏ-ㅣ] 이건 아무 한글(자음 모음 상관없이) 하나라는 뜻입니다.
영문 소문자영문 대문자영문 아무문자한글 자음한글 모음한글 아무문자
/[a-z]/ /[A-Z]/ /[a-zA-Z]/ /[ㄱ-ㅎ]/ /[ㅏ-ㅣ]/ /[ㄱ-ㅎ가-힣ㅏ-ㅣ]/ 숫자 정규식
/[0-9]/.test('a2f7e') //true
- [0-9] 이건 아무 숫자 하나라는 뜻입니다. a2f7e에 숫자가 두개나 있으므로 true입니다.
특수문자 정규식
/\S/.test('abcde') //true
- 백슬래시S 는 특수문자 포함 아무문자 1개라는 뜻입니다.
시작문자, 끝문자 정규식
/^a/.test('abcde') //true /e$/.test('abcde') //true
- ^a 라고 적으면 a로 시작하는지 검사할 수 있습니다.
- e$ 라고 적으면 e로 끝나는지 검사할 수 있습니다.
A or B 정규식
| 이건 or 기호입니다.
정규식에선 괄호맘대로 칠 수 있습니다.
/(e|f)/.test('abcde') //true
- 위 코드는 e 또는 f중 아무거나 한 문자가 있나 검사 가능합니다.
AAAAA 정규식
/a+/
- + 기호를 붙여주시면 뒤에 오는 글자들도 a와 일치하면 반복해서 쭉 찾아달라는 뜻입니다.
/a/는 a를 다 찾으라는게 아니라 a 한개를 찾으라는 뜻입니다.
aaaaa 반복된 a를 찾고 싶으면 /a+/ 쓰면 됩니다.
아무문자 정규식
아무문자 한글자아무문자 여러글자특정문자 여러글자아무문자 여러글자 다음에 t라는 글자.은 특별한 정규식이라 특수문자 정규식이 아님
/\S/ /\S+/ /a+/ /\S+t/ /\./ 이메일 정규식
이메일은 모든 문자 사이에 @ 그리고 .이라는 특수문자가 와야합니다.
/정규식/ => /아무문자 여러개@아무문자 여러개.아무문자 여러개/ => /\S+@\S+\.\S+/
정규식으로 이메일 형식 검사
/\S+@\S+\.\S+/.test('aaa@bbb.ccc')
비밀번호 정규식
요즘은 비밀번호에 대소문자+숫자+특수문자 로 이루어진 비밀번호를 입력하라고 하는 사이트가 많습니다.
유저가 가입시 비밀번호 입력을 잘 했는지 검사해봅시다.
/정규식/ => /영문 아무문자(대소 포함)숫자특수문자/ => /[a-zA-Z0-9\S]/
정규식으로 비밀번호 형식 검사
/[a-zA-Z0-9\S]/.test('비밀번호')
'JAVASCRIPT > Javascript' 카테고리의 다른 글
Scroll Method 정리 (1) 2022.09.16 iframe 높이 자동 조절 (고정 case / 유동 case) (0) 2020.11.27