Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Spring
- 롤토체스
- 알고리즘
- oracle
- 파이썬
- 롤토체스 꿀팁
- 이메일인증
- Python
- MSI
- 리그오브레전드
- Jdk버전 변경
- 데이터베이스
- MacOSJdk
- tomcat
- 테이블
- 스프링
- 다국어처리
- mac jdk 설치
- 회원가입
- NoSQL
- Database
- Java
- 자바스크립트
- jQuery
- SQL
- 롤
- LOL
- jdk
- 마이바티스
- oraclejdk
Archives
- Today
- Total
웹쟁이의 일상
각종 정규표현식(영어만 표현, 숫자만 표현 등) 본문
안녕하세요~ 오늘은 정규표현식에 대해 알아보겠습니다.
정규표현식은 어떤 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어라고 합니다.
정규표현식은 처음 보시면 이게 무슨 외계어야 라며 아주 어렵게 느끼실 수 있는데요,
잘 쓰면 아주 유용하게 여기저기 쓸 수 있어서 편리합니다.
아래 표를 보시면 기본적인 정규표현식의 문법을 알아볼 수 있습니다.
메타문자 | 기능 | 설명 |
. | 문자 | 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다. |
[ ] | 문자 클래스 | "["과 "]" 사이의 문자 중 하나를 선택한다. "¦"를 여러 개 쓴 것과 같은 의미이다. 예를 들면 [abc]d는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다. |
[^ ] | 부정 | 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다. |
^ | 처음 | 문자열이나 행의 처음을 의미한다. |
$ | 끝 | 문자열이나 행의 끝을 의미한다. |
( ) | 하위식 | 여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다. |
\n | 일치하는 n번째 패턴 | 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9 중 하나가 올 수 있다. |
* | 0회 이상 | 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다. |
{m, n} | m회 이상 n회 이하 | "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다. |
그렇다면 각종 검증을 위한 정규표현식들은 어떻게 표현하는지 알아보겠습니다.
영어만
var eng = /^[a-zA-Z]*$/;
숫자만
var num = /^[0-9]*$/;
영어+숫자
var engNum = /^[a-zA-Z0-9]*$/;
이메일
var email = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+$/;
전화번호
var phone = /^\d{2,3}-\d{3,4}-\d{4}$/;
주민등록번호
var jumin = /\d{6} \- [1-4]\d{6}/;
사용법
var regEmail = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+$/;
if (regEmail.test(document.getElementById('email').value)) {
alert('형식에 맞지 않는 이메일입니다. 다시 입력해 주세요.');
return false;
}
대충 많이 쓰이는 것들만 정리를 해 보았습니다. 저대로 가져다 쓰면 결과물은 나오겠지만,
근본적으로 내가 원하는 정규표현식을 만들기 위해서는 기본 규칙을 잘 알아야 합니다.
예를 들어서 내가 만드는 사이트에 비밀번호를 받아야 하는데, 비밀번호를 영문+숫자+특수문자로 하고싶다면
기본 규칙을 활용해서 만들 수 있어야겠죠?
var password = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/;
위의 식은 기본적인 영문, 숫자, 특수문자를 조합하여 최소 8자리 이상의 비밀번호를 만들기 위한 정규표현식입니다.
위의 표를 보면서 해석을 해 보시면 나름 쉽게 해석하실 수 있습니다.
이렇게 이미 만들어져 있는 정규표현식을 해석하면서 이해를 하고,
이해를 했으면 간단한 규칙으로 정규식을 만들어 보고, 적용하다 보면 정규표현식에 익숙해질 수 있습니다.
'Javascript' 카테고리의 다른 글
비주얼 스튜디오 코드(Visual Studio Code) 설치 방법 (0) | 2019.08.19 |
---|---|
[Javascript] 날짜 표현방법 (2) | 2019.07.29 |
[nodeJS] nodeJS로 간단하게 서버 구축하기 (0) | 2019.06.13 |
[Javascript] 로딩바 만들기 (3) | 2019.06.05 |
[Javascript] Modal창 띄워주기 (0) | 2019.05.28 |
Comments