export default class StudentValidation {
// 이름의 유효성을 검사하는 함수
validateName = (name: string) => {
const blankRegExp = /\s/g;
const hyphenRegExp = /-/g;
const periodRegExp = /\./g;
const specialRegExp = /[~!@#$%^&*()_+|<>?:{}]/;
const englishRegExp = /[a-zA-Z]/;
const koreanRegExp = /[ㄱ-ㅎ|ㅏ-ㅣ가-힣]/;
const blankLength = (name.match(blankRegExp) || []).length;
const hyphenLength = (name.match(hyphenRegExp) || []).length;
const periodLength = (name.match(periodRegExp) || []).length;
// 이름의 길이가 50 이상인 경우 false 반환
if (name.length > 50) {
return false;
}
// 이름 앞뒤로 공백이 있는 경우 false 반환
if (name.trim() !== name) {
return false;
}
if (koreanRegExp.test(name)) {
// 이름에 한글과 영어가 혼용된 경우 false 반환
if (englishRegExp.test(name)) {
return false;
}
// 이름이 한글인 경우 특수 문자가 포함되었다면 false 반환
if (name.search(specialRegExp) !== -1) {
return false;
}
// 이름이 한글인 경우 공백이 포함되었다면 false 반환
if (name.search(blankRegExp) !== -1) {
return false;
}
}
// 이름이 영어인 경우 2개 이상의 공백, 하이픈, 마침표가 포함되었다면 false 반환
if (englishRegExp.test(name) && blankLength + hyphenLength + periodLength > 2) {
return false;
}
return true;
}
// 전화번호의 유효성을 검사하는 함수
validateContact = (contact: string) => {
const contactRegExp = /(01[016789])(\d{7}|\d{8})$/g;
return contactRegExp.test(contact);
}
}
import StudentValidation from '../index';
describe('test for valid student parent contact', () => {
it('test validateContact 01012345678', () => {
// Given
const parentContact = '01012345678';
const student = new StudentValidation();
// When
const validation = student.validateContact(parentContact);
// Then
expect(validation).toEqual(true);
});
it('test validateContact 0101234567', () => {
// Given
const parentContact = '0101234567';
const student = new StudentValidation();
// When
const validation = student.validateContact(parentContact);
// Then
expect(validation).toEqual(true);
});
it('test validateContact 12345678910', () => {
// Given
const parentContact = '12345678910';
const student = new StudentValidation();
// When
const validation = student.validateContact(parentContact);
// Then
expect(validation).toEqual(false);
});
it('test validateContact 010111111222222', () => {
// Given
const parentContact = '010111111222222';
const student = new StudentValidation();
// When
const validation = student.validateContact(parentContact);
// Then
expect(validation).toEqual(false);
});
});
처음치곤 깔금하다.