1. 정의
문자열에서 문자 조합에 일치시키기 위해 사용되는 패턴
정규식 또한 객체이다
특정 규칙을 가진 문자열의 집합을 표현하는데 사용되는 형식의 언어
(단점 : 가독성이 떨어져서 표현식을 숙지하지 않으면 이해가 힘들다)
* 정규 표현식은 정규 표현식의 메소드를 바로 사용하는 것보다 문자열 객체의 메소드와 함께 사용하는 것이 일반적임
주로 js 파일에 넣어서 form이 submit 되기 전 유효성을 검사하는 데에 사용된다
2. 메소드 종류
메소드 |
의미 |
test() |
일치하는 문자열이 있을 시 true, 없을 시 false |
exec() |
일치하는 문자열을 리턴 |
match() |
일치하는 부분을 리턴 |
search() |
일치하는 부분의 위치를 리턴 (index : 0부터 시작, 숫자로 리턴함) |
split() |
정규 표현식을 기준으로 문자열을 잘라 배열을 리턴 (정규 표현식과 일치하는 부분만 뺌) |
replace() |
일치하는 부분을 새로운 문자열로 바꿈 대체 문자 사용 가능 (default : defined) |
ㄱ. replace() 메소드 대체 문자
- $& : 일치
- '$ : 일치하는 앞 부분
- $' : 일치하는 뒷부분
- $1, $2 : 그룹
* replace 메소드 대체 문자 부분에서 callback 함수 호출 가능
3. 플래그 문자
문자 |
의미 |
g |
전역 비교 수행 |
i |
대소문자 안 가리고 비교 |
m |
여러 줄 검사 수행 |
4. 앵커 문자
문자 |
의미 |
^ABC |
맨 앞 문자가 ABC인 경우 |
ABC& |
맨 뒤 문자가 ABC인 경우 |
5. 메타 문자
문자 |
의미 |
. |
아무거나 |
[a] |
괄호 안의 글자만 |
[a^] |
괄호 안의 글자를 제외한 |
[a-z] |
a에서 z까지 |
[A-Z] |
A에서 Z까지 |
[0-9] |
0에서 9까지 |
\d |
숫자만 |
\w |
아무 단어 |
\s |
공백 문자 |
\D |
숫자를 제외한 |
\W |
아무 단어가 아닌 |
\S |
공백이 아닌 |
6. 수량문자
문자 |
의미 |
a+ |
1개 이상 |
a* |
0개 or 여러개(1개 제외) |
a? |
0개 or 1개(여러개 제외) |
a{5} |
a가 5개 |
a{2, 5} |
a가 2~5개 |
a{2, } |
a가 2개 이상 |
a{ , 2} |
a가 2개 이하 |
7. 선택문자
문자 |
의미 |
{abc | def} |
abc or def |
8. 정규식 응용
정규식 |
의미 |
var regExp = /\s/g; |
모든 공백 체크 |
var regExp = /^[0-9]+$/; |
숫자만 체크 |
var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; |
이메일 유효성 검사 |
var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/; |
휴대폰번호 유효성 검사 |
var regExp = /^\d{2,3}-\d{3,4}-\d{4}$/; |
전화번호 유효성 검사 |
var regExp = /^[a-z0-9_]{4,20}$/; |
아이디, 비밀번호 유효성 검사 |
9. 예제
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 |
function updateMemberSave() {
// alert('####');
var form = document.update_member_form;
// alert('member_update_form : ' + member_update_form);
if (!form.memberEmail.value) {
alert("이메일을 입력하세요.");
form.memberEmail.focus();
return false;
}
// function validateSmartEmail 함수를 불러와서 유효성 검사를
if (validateSmartEmail(form.memberEmail.value) == false) {
alert("이메일 형식이 맞지 않습니다. \n ex) abcde@gmail.com");
form.memberEmail.focus();
return false;
}
if (!form.memberTel.value) {
alert("전화번호를 입력하세요.");
form.memberTel.focus();
return false;
}
// function validateSmartPhone 함수를 불러와서 유효성 검사를 함
if (validateSmartPhone(form.memberTel.value) == false) {
alert("전화번호 형식이 맞지 않습니다. \n ex) 010-1234-5678");
form.memberTel.focus();
return false;
}
}
//휴대폰번호 체크 정규식
function validateSmartPhone(phone) {
var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;
// test() : 비교해서 문자열 있으면 true, 없으면 false
// 유효하면 true, 아니면 false
return regExp.test(phone);
}
//이메일 체크 정규식
function validateSmartEmail(email) {
var regExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
// test() : 비교해서 문자열 있으면 true, 없으면 false
// 유효하면 true, 아니면 false
return regExp.test(email);
} |
cs |
회원을 추가할 때, form에서 휴대폰 번호와 이메일의 유효성을 검사하는 함수로 응용해봤다.
'FrontEnd > JavaScript & jQuery' 카테고리의 다른 글
Jquery :: text() vs html() 차이 (0) | 2016.10.03 |
---|---|
JavaScript :: 배열 정렬하기(문자열 배열, 숫자 배열) (0) | 2016.10.03 |
JavaScript :: return vs return true vs return false 차이 (0) | 2016.07.14 |
JavaScript :: 부모창 > 자식창(팝업창) > 부모창 (2) | 2016.05.10 |
JavaScript :: text type 내 숫자만 입력 가능하게 하는 예제 (0) | 2016.05.10 |