더보기
Flag | Meaning | Description |
i | Ignore Case | 대소문자를 구별하지 않고 검색한다. |
g | Global | 문자열 내의 모든 패턴을 검색한다. |
m | Multi Line | 문자열의 행이 바뀌더라도 검색을 계속한다. |
s | | .(모든 문자 정규식)이 개행 문자 \n도 포함하도록 |
u | unicode | 유니코드 전체를 지원 |
y | sticky | 문자 내 특정 위치에서 검색을 진행하는 ‘sticky’ 모드를 활성화 |
a-zA-Z | 영어알파벳(-으로 범위 지정) |
ㄱ-ㅎ가-힣 | 한글 문자(-으로 범위 지정) |
0-9 | 숫자(-으로 범위 지정) |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두) 단, 줄바꿈 X |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | 밑줄 문자를 포함한 영숫자 문자에 대응 [A-Za-z0-9_] 와 동일 |
\W | \w 가 아닌 것 |
\s | space 공백 |
\S | space 공백이 아닌 것 |
\특수기호 | 특수기호 \* \^ \& \! \? ...등 |
\b | 63개 문자(영문 대소문자 52개 + 숫자 10개 + _(underscore))가 아닌 나머지 문자에 일치하는 경계(boundary) |
\B | 63개 문자에 일치하는 경계 |
\x | 16진수 문자에 일치 /\x61/는 a에 일치 |
\0 | 8진수 문자에 일치 /\141/은 a에 일치 |
\u | 유니코드(Unicode) 문자에 일치 /\u0061/는 a에 일치 |
\c | 제어(Control) 문자에 일치 |
\f | 폼 피드(FF, U+000C) 문자에 일치 |
\n | 줄 바꿈(LF, U+000A) 문자에 일치 |
\r | 캐리지 리턴(CR, U+000D) 문자에 일치 |
\t | 탭 (U+0009) 문자에 일치 |
| | OR a|b |
[] | 괄호안의 문자들 중 하나. or 처리 묶음 보면 된다. /abc/ : "abc"를 포함하는 /[abc]/ : "a" 또는 "b" 또는 "c" 를 포함하는 [다-바] : 다 or 라 or 마 or 바 |
[^문자] | 괄호안의 문자를 제외한 것 [^lgEn] "l" "g" "E" "N" 4개 문자를 제외 ※ 대괄호 안에서 쓰면 제외의 뜻, 대괄호 밖에서 쓰면 시작점 뜻 |
^문자열 | 특정 문자열로 시작 (시작점) /^www/ |
문자열$ | 특정 문자열로 끝남 (종착점) /com$/ |
? | 없거나 or 최대 한개만 /apple?/ |
* | 없거나 or 있거나 (여러개) /apple*/ |
+ | 최소 한개 or 여러개 /apple+/ |
*? | 없거나, 있거나 and 없거나, 최대한개 : 없음 {0}와 동일 |
+? | 최소한개, 있거나 and 없거나, 최대한개 : 한개 {1}와 동일 |
{n} | n개 |
{Min,} | 최소 Min개 이상 |
{Min, Max} | 최소 Min개 이상, 최대 Max개 이하 {3,5}? == {3}와 동일 |
() | 그룹화 및 캡쳐 |
(?: 패턴) | 그룹화 (캡쳐 X) |
(?=) | 앞쪽 일치(Lookahead), /ab(?=c)/ |
(?!) | 부정 앞쪽 일치(Negative Lookahead), /ab(?!c)/ |
(?<=) | 뒤쪽 일치(Lookbehind), /(?<=ab)c/ |
(?<!) | 부정 뒤쪽 일치(Negative Lookbehind), /(?<!ab)c/ |
영어 숫자
/[^A-Za-z0-9]/ig
영어 한글
/[^A-Za-zㄱ-ㅎ|ㅏ-ㅣ|가-힣]/ig
영어 특수문자 숫자
/[^A-Za-z0-9`~!@#$%^&*|\\\'\";:\/?]/ig
주민등록번호 앞자리
/^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$/g;
대시없는 13자리
/^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{7}$/
대시있는 주민번호 13자리
/^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])[-]\d{7}$/
휴대폰 번호
/^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/
일반 번호
/^\d{2,3}-?\d{3,4}-?\d{4}$/
비밀번호 특수문자 + 문자 + 숫자 8~15자리
/^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/
비밀번호 문자+숫자 8~15자리
/^[A-Za-z0-9]{8,15}$/
이메일
/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i
계좌번호
/([0-9,\-]{3,6}\-[0-9,\-]{2,6}\-[0-9,\-])/
//영어 대문자로 바꿈(이름)
//천지인 키보드 때문에 입력으로 막으면 안 됨!
$("input[name=name]").on("blur", function() {
const pattern=/^[0-9ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z/\s]*$/;
this.value = this.value.replace(/[^0-9A-Za-zㄱ-ㅎ|ㅏ-ㅣ|가-힣/\s]/ig, '');
if(pattern.test(this.value)){
//소문자면 toLowerCase
this.value = this.value.toUpperCase();
}
});
/*
인풋으로 들어오는 밸류 막을때
<input name="test" oninput="strOnInput(this)" />
*/
function strOnInput(e) {
e.value = e.value.replace(/[^A-Za-z0-9]/ig, '')
}
// jquery 실시간 변경
$("input[name=test]").on("propertyChange change focus focusout keyup paste input", function() {
this.value = this.value.replace(/[^0-9]/ig, '');
});
항상 모바일도 신경쓰자
실시간 변경은 일반 키보드가 아닌 모바일 키보드도 신경써야한다.
모바일 키보드 중 천지인 키보드는 · 으로 획을 추가하기 때문에 한글 자판을 신경써야한다.
'JavaScript' 카테고리의 다른 글
[JavaScript] 페이징 (0) | 2024.10.15 |
---|---|
[JavaScript] 쓸만한 유틸 모음 (0) | 2024.04.24 |
[JavaScript] 드래그 & 드롭 (0) | 2024.04.24 |
[Javascript] 공인 IP 가져오기 (0) | 2023.12.01 |
[JavaScript] 로딩 (0) | 2023.10.12 |
더보기
Flag | Meaning | Description |
i | Ignore Case | 대소문자를 구별하지 않고 검색한다. |
g | Global | 문자열 내의 모든 패턴을 검색한다. |
m | Multi Line | 문자열의 행이 바뀌더라도 검색을 계속한다. |
s | | .(모든 문자 정규식)이 개행 문자 \n도 포함하도록 |
u | unicode | 유니코드 전체를 지원 |
y | sticky | 문자 내 특정 위치에서 검색을 진행하는 ‘sticky’ 모드를 활성화 |
a-zA-Z | 영어알파벳(-으로 범위 지정) |
ㄱ-ㅎ가-힣 | 한글 문자(-으로 범위 지정) |
0-9 | 숫자(-으로 범위 지정) |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두) 단, 줄바꿈 X |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | 밑줄 문자를 포함한 영숫자 문자에 대응 [A-Za-z0-9_] 와 동일 |
\W | \w 가 아닌 것 |
\s | space 공백 |
\S | space 공백이 아닌 것 |
\특수기호 | 특수기호 \* \^ \& \! \? ...등 |
\b | 63개 문자(영문 대소문자 52개 + 숫자 10개 + _(underscore))가 아닌 나머지 문자에 일치하는 경계(boundary) |
\B | 63개 문자에 일치하는 경계 |
\x | 16진수 문자에 일치 /\x61/는 a에 일치 |
\0 | 8진수 문자에 일치 /\141/은 a에 일치 |
\u | 유니코드(Unicode) 문자에 일치 /\u0061/는 a에 일치 |
\c | 제어(Control) 문자에 일치 |
\f | 폼 피드(FF, U+000C) 문자에 일치 |
\n | 줄 바꿈(LF, U+000A) 문자에 일치 |
\r | 캐리지 리턴(CR, U+000D) 문자에 일치 |
\t | 탭 (U+0009) 문자에 일치 |
| | OR a|b |
[] | 괄호안의 문자들 중 하나. or 처리 묶음 보면 된다. /abc/ : "abc"를 포함하는 /[abc]/ : "a" 또는 "b" 또는 "c" 를 포함하는 [다-바] : 다 or 라 or 마 or 바 |
[^문자] | 괄호안의 문자를 제외한 것 [^lgEn] "l" "g" "E" "N" 4개 문자를 제외 ※ 대괄호 안에서 쓰면 제외의 뜻, 대괄호 밖에서 쓰면 시작점 뜻 |
^문자열 | 특정 문자열로 시작 (시작점) /^www/ |
문자열$ | 특정 문자열로 끝남 (종착점) /com$/ |
? | 없거나 or 최대 한개만 /apple?/ |
* | 없거나 or 있거나 (여러개) /apple*/ |
+ | 최소 한개 or 여러개 /apple+/ |
*? | 없거나, 있거나 and 없거나, 최대한개 : 없음 {0}와 동일 |
+? | 최소한개, 있거나 and 없거나, 최대한개 : 한개 {1}와 동일 |
{n} | n개 |
{Min,} | 최소 Min개 이상 |
{Min, Max} | 최소 Min개 이상, 최대 Max개 이하 {3,5}? == {3}와 동일 |
() | 그룹화 및 캡쳐 |
(?: 패턴) | 그룹화 (캡쳐 X) |
(?=) | 앞쪽 일치(Lookahead), /ab(?=c)/ |
(?!) | 부정 앞쪽 일치(Negative Lookahead), /ab(?!c)/ |
(?<=) | 뒤쪽 일치(Lookbehind), /(?<=ab)c/ |
(?<!) | 부정 뒤쪽 일치(Negative Lookbehind), /(?<!ab)c/ |
영어 숫자
/[^A-Za-z0-9]/ig
영어 한글
/[^A-Za-zㄱ-ㅎ|ㅏ-ㅣ|가-힣]/ig
영어 특수문자 숫자
/[^A-Za-z0-9`~!@#$%^&*|\\\'\";:\/?]/ig
주민등록번호 앞자리
/^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$/g;
대시없는 13자리
/^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{7}$/
대시있는 주민번호 13자리
/^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])[-]\d{7}$/
휴대폰 번호
/^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/
일반 번호
/^\d{2,3}-?\d{3,4}-?\d{4}$/
비밀번호 특수문자 + 문자 + 숫자 8~15자리
/^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/
비밀번호 문자+숫자 8~15자리
/^[A-Za-z0-9]{8,15}$/
이메일
/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i
계좌번호
/([0-9,\-]{3,6}\-[0-9,\-]{2,6}\-[0-9,\-])/
//영어 대문자로 바꿈(이름)
//천지인 키보드 때문에 입력으로 막으면 안 됨!
$("input[name=name]").on("blur", function() {
const pattern=/^[0-9ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z/\s]*$/;
this.value = this.value.replace(/[^0-9A-Za-zㄱ-ㅎ|ㅏ-ㅣ|가-힣/\s]/ig, '');
if(pattern.test(this.value)){
//소문자면 toLowerCase
this.value = this.value.toUpperCase();
}
});
/*
인풋으로 들어오는 밸류 막을때
<input name="test" oninput="strOnInput(this)" />
*/
function strOnInput(e) {
e.value = e.value.replace(/[^A-Za-z0-9]/ig, '')
}
// jquery 실시간 변경
$("input[name=test]").on("propertyChange change focus focusout keyup paste input", function() {
this.value = this.value.replace(/[^0-9]/ig, '');
});
항상 모바일도 신경쓰자
실시간 변경은 일반 키보드가 아닌 모바일 키보드도 신경써야한다.
모바일 키보드 중 천지인 키보드는 · 으로 획을 추가하기 때문에 한글 자판을 신경써야한다.
'JavaScript' 카테고리의 다른 글
[JavaScript] 페이징 (0) | 2024.10.15 |
---|---|
[JavaScript] 쓸만한 유틸 모음 (0) | 2024.04.24 |
[JavaScript] 드래그 & 드롭 (0) | 2024.04.24 |
[Javascript] 공인 IP 가져오기 (0) | 2023.12.01 |
[JavaScript] 로딩 (0) | 2023.10.12 |