[Vue-js] 정규식 스크립트 모음(휴대폰 / 이메일 / 일반 전화번호 /비밀번호)
저장 전에 벨리데이션 체크하는 로직을 추가하였더니
사용자가 입력시 불편할것 같다며 다시 빼달란다.
나중에 필요할 때 가져다가 사용하자.
/**
* 휴대전화 번호 체크 정규식
*/
checkPhoneNumber(value) {
const regex = /^d{3}-d{3,4}-d{4}$/;
if (regex.test(value) === true) return true;
return false;
},
/**
* 일반전화 번호 체크 정규식
*/
checkTelNumber(value) {
const regex = /^d{2,3}-d{3,4}-d{4}$/;
if (regex.test(value) === true) return true;
return false;
},
/**
* 이메일주소 체크 정규식
*/
checkEmail(value) {
// eslint-disable-next-line no-useless-escape
const regex = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if (regex.test(value) === true) return true;
return false;
또는
const format = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/;
return format.test(email);
},
/**
* 비밀번호 정규식
* 특수문자 / 문자 / 숫자 포함 형태의 8~15자리 이내의 암호 정규식
*/
checkPasswd(value) {
const regex = /^.*(?=^.{8,15}$)(?=.*d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/;
if (regex.test(value) === true) return true;
return false;
},
/**
* 비밀번호 정규식
* 숫자와 문자 포함 형태의 6~12자리 이내의 암호 정규식
*/
checkStrNumPasswd(value) {
const regex = /^[A-Za-z0-9]{6,12}$/;
if (regex.test(value) === true) return true;
return false;
},
아이디 체크
// 아이디 체크(영문 또는 영문+숫자 조합 여부)
checkUserId(src) {
if (src !== undefined) {
const reg = /^[a-zA-Z]+[a-zA-Z0-9]{8,30}$/;
if (src.match(reg)) {
return true;
}
}
return false;
},
텍스트의 n, r을 <br>로 치환
convertNewLineToBrTag(str) {
let strValue = str;
if (strValue) {
strValue = strValue.replace(/(?:rn|r|n)/g, '<br />');
} else {
strValue = '';
}
return strValue;
},
XML객체를 JSON형식으로 변환
/**
* XML객체를 JSON형식으로 변환
*/
convert_xml2json(xml) {
let obj = {};
if (xml.children.length > 0) {
for (let i = 0; i < xml.children.length; i += 1) {
const item = xml.children.item(i);
if (typeof (obj[item.nodeName]) === 'undefined') {
obj[item.nodeName] = this.$_comm_xml2json(item);
} else {
if (typeof (obj[item.nodeName].push) === 'undefined') {
const old = obj[item.nodeName];
obj[item.nodeName] = [];
obj[item.nodeName].push(old);
}
obj[item.nodeName].push(this.$_comm_xml2json(item));
}
}
} else {
obj = xml.textContent;
}
return obj;
},
UUID 생성
// UUID 생성
getGuid() {
function s4() {
return ((1 + Math.random()) * 0x10000 || 0).toString(36).substring(5);
}
return s4() + s4().concat('-') + s4().concat('-') + s4().concat('-') + s4().concat('-') + s4() + s4() + s4();
},
랜덤 문자열 생성
// 랜덤문자열 생성
randomStr() {
const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
let randomStr = '';
for (let index = 0; index < 8; index += 1) {
const rnum = Math.floor(Math.random() * chars.length);
randomStr += chars.substring(rnum, rnum + 1);
}
return randomStr;
},
파일사이즈 체크하여 표시하기
// 파일사이즈 표시
bytes(bytes = 0, decimals) {
const k = 1024;
const dm = decimals <= 0 ? 0 : decimals || 2;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
const retVal = parseFloat((bytes / (k ** i)).toFixed(dm));
return `${retVal} ${sizes[i]}`;
},
// 파일사이즈 표시
dataURLtoFile(dataurl, fileName) {
const arr = dataurl.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n > 0) {
n -= 1;
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], fileName, { type: mime });
},
수치값 3자리 콤마 적용(금액, 돈 표기 등)
numberComma(value) {
const rtnValue = `${value}`;
return String(rtnValue).replace(/B(?=(d{3})+(?!d))/g, ',');
},
숫자를 제외한 모든 문자 제거
numberOnly(value) {
const rtnValue = `${value}`;
return String(rtnValue).replace(/[^d]+/g, '');
},
XML 형식의 텍스트 파일을 XML 객체로 변환
/**
* XML 형식의 텍스트 파일을 XML 객체로 변환
* @param {XML객체} xmlStr XML형식의 텍스트파일
*/
convertStringToXml(xmlStr) {
let returnDoc = '';
if (window.DOMParser) {
const dp = new window.DOMParser();
returnDoc = dp.parseFromString(xmlStr, 'text/xml');
} else {
const xmlDoc = new window.ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = 'false';
xmlDoc.loadXML(xmlStr);
returnDoc = xmlDoc;
}
return returnDoc;
},
[REFERENCE]