한글입력 유무 판단, 숫자 외 입력 유무 판단 등
/**
* 한글입력 확인
*
* @author kyoungsoo lee
* @date 2023. 01. 26.
* @memberOf strLib
* @param {string} source - 원본 문자열
* @return {boolean} 한글 포함 여부
* @example strLib.filterCharForLocal("abcd홍길동");
*/
strLib.filterCharForLocal = function(str) {
try {
for ( var i=0; i < str.length; i++){
var asc = str.charCodeAt(i);
if (asc > 127) {
return false;
}
}
return true;
} catch (e) {
console.log("strLib.isKorean: " + e);
}
};
/**
* 한글입력 확인
*
* @author kyoungsoo lee
* @date 2023. 01. 26.
* @memberOf strLib
* @param {string} source - 원본 문자열
* @return {boolean} 한글 포함 여부
* @example strLib.filterCharForLocal("abcd홍길동");
*/
strLib.isKorean = function(source) {
try {
if (source != null && source.trim().length > 0) {
var locale = 0;
for (var i = 0; i < source.length; i++) {
locale = strLib.getLocale(source.charAt(i));
if ((locale & ~0x3) == 0) {
return true;
}
}
}
return false;
} catch (e) {
console.log("strLib.isKorean: " + e);
}
};
/**
* 숫자 이외 값 입력 확인
*
* @author kyoungsoo lee
* @date 2023. 01. 30.
* @memberOf strLib
* @param {string} source - 원본 문자열
* @return {boolean} 숫자 이외 값 입력 여부
* @example strLib.filterCharForLocal("12-989");
*/
strLib.filterCharForNum = function(str) {
var re = new RegExp('[0-9]');
var isOtherChar = false;
for(var i=0; i < str.length; i++){
var ch = str.charAt(i);
if(!re.test(ch)){
isOtherChar = true;
break;
}
}
return isOtherChar;
};
/**
* 입력받은 문자열에 특수 문자가 있으면 true, 아니면 false를 리턴합니다.
*
* @author kyoungsoo lee
* @date 2023. 01. 18.
* @memberOf strLib
* @param {string} source - 원본 문자열
* @return {boolean} 특수문자 포함 여부
* @example strLib.isSpecialCharacters("무궁화꽃이");
*/
strLib.isSpecialCharacters = function(source) {
try {
if (source != null && source.trim().length > 0) {
var locale = 0;
for (var i = 0; i < source.length; i++) {
locale = strLib.getLocale(source.charAt(i));
if ((locale & ~0X8) == 0) {
return true;
}
}
}
return false;
} catch (e) {
console.log("strLib.isKorean: " + e);
}
};
/**
* 문자(char)의 유형을 반환합니다.
*
* @author kyoungsoo lee
* @date 2023. 01. 30.
* @memberOf strLib
* @param {string} source - 원본 문자열
* @return {number} 한글음절(1), 한글자모(2), 숫자(4), 특수문자(8), 영문대(16), 영문소(32), 기타(48)
*/
strLib.getLocale = function(source) {
try {
var locale = 0;
if (source.length > 0) {
var charCode = source.charCodeAt(0);
if (charCode >= 0XAC00 && charCode <= 0XD7A3) {
// 한글음절.[44032 ~ 55203]
locale = 0X1; // 1
} else if ((charCode >= 0X1100 && charCode <= 0X11F9) || (charCode >= 0X3131 && charCode <= 0X318E)) {
// 한글자모.[4352 ~ 4601]
locale = 0X2; // 2
} else if (charCode >= 0X30 && charCode <= 0X39) {
// 숫자.[48 ~ 57]
locale = 0X4; // 4
} else if ((charCode >= 0X20 && charCode <= 0X2F) || (charCode >= 0X3A && charCode <= 0X40) || (charCode >= 0X5B && charCode <= 0X60)
|| (charCode >= 0X7B && charCode <= 0X7E)) {
// 특수문자
locale = 0X8; // 8
} else if (charCode >= 0X41 && charCode <= 0X5A) {
// 영문 대.[65 ~ 90]
locale = 0X10; // 16
} else if (charCode >= 0X61 && charCode <= 0X7A) {
// 영문 소.[97 ~ 122]
locale = 0X20; // 32
} else {
// 기타
locale = 0X30; // 48
}
}
return locale;
} catch (e) {
console.log("strLib.getLocale: " + e);
}
};