체인의정석

타입스크립트 정규 표현식 검사 (삭제된 코드 백업) 본문

개발

타입스크립트 정규 표현식 검사 (삭제된 코드 백업)

체인의정석 2021. 7. 9. 12:19
728x90
반응형

정규 표현식 검사, 작성한 코드이나 다음과 같은 조건문의 검사의 반복은 복잡하다고 하여 소스 코드에서 삭제하였다.

 

나중에 조건 검사를 할 때 다시 보기 위하여 코드를 백업해둔다.

 

(해당 칼럼 명은 모두 IVMS101 표준 그대로 해둠)

 

다른 모듈에서 조건 검사하는 함수를 미리 정의해놓고, type안에 요소가 있을 시 해당 요소가 조건에 맞는지 검사하는 식이다. 각 검사 식 안에는 맞지 않을 시 에러를 리턴하도록 설정하였다.

// ToDo :  정규 표현식 검사 및 제약 조건 검사
export class ValidAddress {
constructor(address: Address) {}
validAddressLine(address: Address): void {
  const AddressLineLength = address.addressLine.length;
  const AddressLineArray = address.addressLine;
  if (!(AddressLineLength > 7 && AddressLineArray.every((e) => checkMax70Text(e))))
    throw new Error(`${AddressLineArray} contains over 7 Address line`); // Multiplicity
}
validAddress(address: Address): boolean {
  try {
    checkCountryCode(address.counrty); // Constraint C6
    checkMax50Text(address.addressType);
    if (!address.department) checkMax50Text(address.department);
    if (!address.subDepartment) checkMax70Text(address.subDepartment);
    if (!address.streetName) checkMax70Text(address.streetName);
    if (!address.buildingNumber) checkMax16Text(address.buildingNumber);
    if (!address.buildingName) checkMax70Text(address.buildingName);
    if (!address.floor) checkMax35Text(address.floor);
    if (!address.postBox) checkMax16Text(address.postBox);
    if (!address.room) checkMax70Text(address.room);
    if (!address.postcode) checkMax16Text(address.postcode);
    checkMax35Text(address.addressType);
    if (!address.townLocationName) checkMax35Text(address.townLocationName);
    if (!address.districtName) checkMax35Text(address.districtName);
    if (!address.countrySubDivision) checkMax35Text(address.countrySubDivision);
    if (!(address.addressLine.length === 0)) this.validAddressLine(address);
    return true;
  } catch (error) {
    return false;
  }
}
}

 

검사식 중 일부 다음과 같이 정규 표현식을 사용하여 에러 리턴

// Number
export function checkNumber(text: string) {
  if (text.toString().length > 18 || text.toString().length < 0)
    throw new Error(`${text} length should be less than 18 and over 0`); // FIXME : 소수점 있을시 에러 리턴
}

조건을 모두 통과하면 true.

조건식을 모두 모아서 하나의 조건식으로 만들었으나 이는 매우 비효율적임으로 작성한 코드에서 삭제하였다.

728x90
반응형
Comments