정규식 표현
정규 표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식언어입니다.
01. 정규표현식 객체 주요 패턴
패턴 | 설명 |
---|---|
abc | abc 문자열을 검색합니다. /abc/는 'abc' |
[abc] | a,b,c중 문자 하나를 검색합니다. /[abc]d/는 'ad', 'bd', 'cd' |
[^abc] | a,b,c를 제외한 문자 하나를 검색합니다. /[^abc]d/는 'ed', 'fd', 'gd' |
[A-Z] | 알파벳 대문자 문자를 검색합니다. |
[a-z] | 알파벳 소문자 문자를 검색합니다. |
[0-9] | 0-9까지의 숫자를 검색합니다. |
. | 하나의 문자를 검색합니다. 만약 '마침표' 문자 그대로의 의미를 사용할 경우 '₩.' 으로 표현해야 합니다. |
\w | 알파벳, 숫자, _를 검색합니다. |
\W | 알파벳, 숫자, _를 제외하고 검색합니다. |
\d | 숫자를 검색합니다. |
\D | 숫자를 제외하고 검색합니다. |
\s | 하나의 공백을 검색합니다. |
\S | 공백을 제외하고 검색합니다. |
^ | 행의 첫 문자가 일치해야 함을 의미합니다. |
$ | 행의 끝 문자가 일치해야 함을 의미합니다. |
* | * 앞의 문자가 0번 이상 반복을 의미합니다. /a*b/는 'b', 'ab', 'aab', 'aaab', 'aaa...b' |
+ | + 앞의 문자가 1번 이상 반복을 의미합니다. /a+b/는 'ab', 'aab', 'aaab', 'aaa...b' |
? | ? 앞의 문자가 0번 또는 1번 의미합니다. /a?b/는 'b', 'ab' |
{} | /₩{3}/은 숫자 3개를 의미합니다. /₩{3,5}/은 숫자 3~5개를 의미합니다. /₩d{3,}/은 숫자 3개 이상을 의미합니다. |
a|b | a or b를 의미합니다. |
(abc) | 그룹화를 의미합니다. |
02. 예제
{
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>정규표현식 객체</title>
<script>
var hpReg = /^₩d{10,11}$/;
var emailReg = /^[A-Za-z0-9!#$%^&*_-]+@[A-Za-z0-9_-]+(₩.[A-Za-z0-9_-]+){1,2}$/;
var hp1 = '010123456';
var hp2 = '01012345678';
var email1 = 'abc&1_23&A-BC@icox';
var email2 = 'abc&1_23&A-BC@icox.com';
var email3 = 'abc&1_23&A-BC@icox.co.kr';
var email4 = 'abc&1_23&A-BC@icox.abc.co.kr';
console.log(hpReg.test(hp1));
console.log(hpReg.test(hp2));
console.log(emailReg.test(email1));
console.log(emailReg.test(email2));
console.log(emailReg.test(email3));
console.log(emailReg.test(email4));
</script>
</head>
<body>
</body>
</html>
}
결과보기
false
true
false
true
true
false
true
false
true
true
false
03. 예제 풀이
₩d{10,11}
₩d는 숫자를 의미하고 {10,11}는 10~11자를 의미합니다.
[A-Za-z0-9!#$%^&*_-]
이메일 아이디 부분에 해당하며 영문, 숫자, 특수문자 중 하나의 문자를 의미합니다.
[A-Za-z0-9!#$%^&*_-]+
이메일 아이디 부분에 해당하며 영문, 숫자, 특수문자 중 하나의 문자가 1번 이상 반복해서 나와야 하기 때문에 + 패턴을 추가합니다.
[A-Za-z0-9!#$%^&*_-]+@
이메일의 '이메일 아이디@' 패턴을 만듭니다.
[A-Za-z0-9!#$%^&*_-]+@[A-Za-z0_-]+
이메일 주소 앞부분에 해당하며 영문, 숫자, 특수문자 중 하나의 문자가 1번 이상 반복해서 올 수 있습니다. '이메일 아이디@이메일 앞 주소'
[A-Za-z0-9!#$%^&*_-]+@[A-Za-z0_-]+(₩.[A-Za-z0-9_-]+){1,2}
이메일 주소 나머지 부분에 해당하면 '.나머지 주소'가 1번~2번 올 수 있습니다.
'이메일 아이디@이메일 앞 주소. 나머지 주소' 또는 '이메일 아이디@이메일 앞 주소.나머지 주소.나머지 주소'
'Javascript' 카테고리의 다른 글
indexOf() / lastIndexOf() (2) | 2022.08.17 |
---|---|
문자열 객체 slice() / substring() / substr() (5) | 2022.08.17 |
내장 함수 (5) | 2022.08.12 |
배열 객체 join() / push() / pop() (5) | 2022.08.11 |
요소 선택 (7) | 2022.08.06 |
댓글