| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- /**
- * 마지막 글자 받침체크
- */
- function isSingleCharacter(text){
- var strGa = 44032 //가
- var strHih = 55203 //힣
- let lastStrCode = text.charCodeAt(text.length-1)
- if(lastStrCode < strGa || lastStrCode > strHih){
- return false //한글이 아닌 경우
- }
- return ((lastStrCode - strGa) % 28 == 0)
- }
- /**
- * 를/을 필터
- * @param {*} text 필터 문자열
- * @param {*} filter 필터 조사 neun : 는/은 leul :를/을 ro: 로/으로
- */
- function filterCheck(text, filter){
- if(filter == '은' || filter == '는') return text + (isSingleCharacter(text) ? '는' : '은')
- if(filter == '을' || filter == '를') return text + (isSingleCharacter(text) ? '를' : '을')
- if(filter == '으로' || filter == '로') return text + (isSingleCharacter(text) ? '로' : '으로')
- if(filter == '이' || filter == '가') return text + (isSingleCharacter(text) ? '가' : '이')
- if(filter == '과' || filter == '와') return text + (isSingleCharacter(text) ? '와' : '과')
- }
- /**
- * @param {*} str 원본 문자열
- * @param {*} target 문자열 교체 대상
- * @param {*} filter 필터 조사 neun : 는/은 leul :를/을 ro: 로/으로
- * @returns
- */
- function getChangedStr(str, target){
- if(!useUtil.isNull(str)){
- let result = ''
- if(str.includes(target)){
- let targetStr = str.substr(0, target.length+1) //조사를 변경하기 위해 교체대상의 다음문자까지 가져오기.
- let target2Str = str.substr(0, target.length+2)
- let lastStr = targetStr.substr(-1)
- if(target2Str.substr(-2) === '으로'){
- lastStr = '으로'
- result = str.replace(target2Str, filterCheck(target, lastStr))
- }else{
- result = str.replace(targetStr, filterCheck(target, lastStr))
- }
- }else{
- result = str
- }
- return result
- }
- }
- /*
- * 뷰티파이 유효성 검사
- */
- let valid = {
- // 필수입력
- required(fieldName){
- return (value) => !!value || `${getChangedStr(fieldName+'을', fieldName)} 입력하세요.`
- },
- //파일 필수
- requiredFile(value){
- return (input) => !!value || '파일을 첨부해주세요'
- },
- // 셀렉트 필수입력
- requiredSelect(fieldName){
- return (value) => !!value || `${getChangedStr(fieldName+'을', fieldName)} 선택하세요.`
- },
- // 로그인 > 아이디 체크
- loginIdChk(value){
- return /^[a-zA-Z0-9]{5,20}$/.test(value) || false
- },
- // 로그인 > 비밀번호 체크
- loginPwChk(value){
- return /^(?=.*\d|.*[!@#$%^&*()-=_+])[A-Za-z\d!@#$%^&*()-=_+]{8,16}$/i.test(value) || false
- },
- // 아이디
- idRegChk(){
- return (value) => /^[a-zA-Z0-9]{6,20}$/.test(value) || '영문, 숫자 6자리~20자리로 입력하세요.'
- },
- // 비밀번호
- passWordChk(){
- // ^(?=.*[A-Za-z])(?=.*\d)(?=.*[\/\[`~!@#\$%^&\*|\\\'\x22;:\?\=\+_()\<\>\]])[A-Za-z\d\/\[`~!@#\$%^&\*|\\\'\x22;:\?\=\+_\(\)\<\>\]]
- // 영문, 특수문자, 숫자 중 두 종류는 필수로 들어가야함
- // return (value) => /^(?=.*\d|.*[!@#$%^&*()-=_+])[A-Za-z\d!@#$%^&*()-=_+]{8,16}$/i.test(value) || `영문자, 숫자, 특수문자 조합하여 8자리 이상 입력하세요.`
- // 영문, 특수문자, 숫자 중 세 종류는 필수로 들어가야함
- return (value) => /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,16}$/i.test(value) || `영문자, 숫자, 특수문자 조합하여 8자리 이상 입력하세요.`
- },
- // 비밀번호
- passWordChk2(){
- return (value) => /^(?=.*\d|.*[!@#$%^&*()-=_+])[A-Za-z\d!@#$%^&*()-=_+]{8,16}$/i.test(value) || `비밀번호를 확인하세요.`
- },
- // 이름
- nameChk(fieldName){
- return (value)=> /^[가-힣a-zA-Z]{2,20}$/.test(value) || `한글, 영문 2자리 ~ 20자리로 입력하세요.`
- },
- // 이메일
- emailChk(){
- return (value)=> /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,50}))$/.test(value) || '이메일을 정확하게 입력하세요.'
- },
- // 동일 비밀번호
- passWordConfirm(target){
- return (value) => (value && value === target) ||'신규 비밀번호와 동일하게 입력하세요.'
- },
- // 전화번호(휴대폰 번호)
- callChk(){
- return (value) => /^0([0-9]{1,2})-?([0-9]{3,4})-?([0-9]{4})$/.test(value) || '휴대폰 번호(전화번호)를 확인하세요.'
- },
- // 휴대폰 번호연락처
- phoneChk(){
- return (value) => /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/.test(value) || '휴대폰 번호를 확인하세요.'
- },
- // min max
- minMaxChk(min, max){
- return (value) => (value.length < min || value.length > max) ? `숫자 ${min}자리 ~ ${max}자리로 입력하세요.` : true
- },
- // max
- maxChk(max){
- return (value) => value.length <= max || `${max}자 이하 입력하세요.`
- },
- // min
- minChk(min){
- return (value) => value.length >= min || `${min}자 이상 입력하세요.`
- },
- // 중복 체크 후 사용 가능한 아이디
- abledChk(result, field){
- return result === false || `사용할 수 없는 ${field}입니다.`
- },
- // 아이디 t/f
- idStrChk(value){
- return /^[a-zA-Z0-9]{6,20}$/.test(value)
- },
- // 이메일 t/f
- emailStrChk(value){
- return /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,50}))$/.test(value)
- },
- // 연락처 t/f
- phoneStrChk(value){
- return /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/.test(value)
- },
- //faq
- strMinMax(min, max){
- return (value) => (value.length < min || value.length > max) ? `한글, 영문, 특수문자, 숫자 ${min}자리 ~ ${max}자리로 입력하세요.` : true
- },
- // 로그인 > 아이디 찾기 / 비밀번호 재발급 // 이름 한글과 영문 2~20 자리
- loginNameChk(value){
- return /^[가-힣a-zA-Z]{2,10}$/.test(value) || false
- },
- // 시스템 설정 > 관리자 계정 관리 : 이메일(입력칸이 두개로 분리되어있음)
- seperateEmailChk(emailId, emailAddr){
- return this.emailStrChk(emailId + '@' + emailAddr) || '이메일을 정확하게 입력하세요.'
- },
- // 시스템 설정 > 관리자 계정 관리 : 전화번호(입력칸이 새개로 분리되어있음)
- seperateContactChk(contact1, contact2, contact3){
- return this.phoneStrChk(contact1 + '-' + contact2 + '-' + contact3 ) || '숫자 2자리 ~ 11자리로 입력하세요'
- },
- // 필수 입력값 판단
- requiredChk(str, fieldName){
- return str == '' ? `${getChangedStr(fieldName+'을', fieldName)} 입력하세요.` : false
- },
- // 이메일 에러 메시지 생성
- emailErrorStrForChk(emailId, emailAddr){
- return !(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,50}))$/.test(emailId + '@' + emailAddr)) ? '이메일을 정확하게 입력하세요.' : false
- },
- // 전화번호(휴대폰) 에러 메시지 생성
- contactErrorStrForChk(contact){
- return !(/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/.test(contact)) ? '숫자 2자리 ~ 11자리로 입력하세요' : false
- },
- // 시스템 설정 > 세대 계정 관리 : 전화번호(ID) 유효성 검사 세팅
- phoneIdChk(){
- return (value) => /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/.test(value) || '전화번호(ID)를 확인하세요.'
- },
- urlPattern(__VAL){
- const patterUrl = new RegExp(
- "^(https?:\\/\\/)" + // 프로토콜
- "((([a-zA-Z\\d]([a-zA-Z\\d-]*[a-zA-Z\\d])*))\\.)*" + // 서브도메인
- "([a-zA-Z\\d]([a-zA-Z\\d-]*[a-zA-Z\\d])*\\.[a-zA-Z]{2,})" + // 도메인
- "(\\:\\d+)?(\\/[-a-zA-Z\\d%@_.~+&:]*)*" + // 경로
- "(\\?[;&a-zA-Z\\d%@_.,~+&:=-]*)?" + // 쿼리 문자열
- "(\\#[-a-zA-Z\\d_]*)?$" // 앵커
- );
- return patterUrl.text(__VAL);
- }
- // /**
- // * P5G 추가 validation
- // * 생성 시 p5g를 앞에 붙여 생성[p5gRequired]
- // */
- // p5gRequired(fieldName){
- // let msg = ''
- // const language = useLangStore().getLang
- // if(language == 'kr') msg = `${getChangedStr(fieldName+'을', fieldName)} 입력하세요.`
- // else if(language == 'en') msg = `${fieldName} is required`
- // return (value) => !!value || msg
- // },
- // p5gNumCheck(num, type) {
- // let checkNum = num.replace(/[^0-9]/g, '')
- // if(type === 'otp') {
- // // OTP키값
- // if (num !== checkNum) {
- // num = checkNum
- // } else if(num.length > 6) {
- // num = num.slice(0, 6)
- // }
- // } else {
- // // 연락처
- // let phoneNum = checkNum
- // if(phoneNum > 11) {
- // phoneNum = phoneNum.slice(0, 11)
- // }
- // // 입력한 숫자를 전화번호 형식으로 변환
- // if (phoneNum.length > 7) {
- // // 3자리-4자리-4자리 형식
- // phoneNum = phoneNum.replace(/(\d{3})(\d{4})(\d{4})/, '$1-$2-$3');
- // } else if (phoneNum.length > 3) {
- // // 3자리-4자리 형식
- // phoneNum = phoneNum.replace(/(\d{3})(\d{4})?/, '$1-$2');
- // }
-
- // // 변환된 값을 다시 input에 설정
- // num = phoneNum
- // }
- // return num
- // },
- // /**
- // * 필수 선택 (0값도 있는값으로 판단)
- // */
- // p5gRequiredSelect(fieldName) {
- // const language = useLangStore().getLang
- // return (value) => {
- // let isNotNull = value !== '' && value !== null && value !== undefined
- // let msg = ''
- // if(language == 'kr') msg = `${getChangedStr(fieldName + '을', fieldName)} 선택하세요.`
- // else if(language == 'en') msg = `${fieldName} is required select`
- // return isNotNull ? true : msg
- // }
- // },
- // /**
- // * 필수 선택 (0값도 있는값으로 판단)
- // */
- // p5gRequiredSelect(fieldName) {
- // const language = useLangStore().getLang
- // return (value) => {
- // let isNotNull = value !== '' && value !== null && value !== undefined
- // let msg = ''
- // if(language == 'kr') msg = `${getChangedStr(fieldName + '을', fieldName)} 선택하세요.`
- // else if(language == 'en') msg = `${fieldName} is required select`
- // return isNotNull ? true : msg
- // }
- // }
- }
- export default valid
|