본문 바로가기
JavaScript

[JS] 부등식 검증 함수

by amoomar 2024. 7. 4.
반응형

 

 

javascript에서 "0>1"등의 형식과 같은 문자열로 된 부등식의 결과가 올바른지, 아닌지 판별하기 위해 eval()함수를 사용할 수 있다. 하지만 어딜 찾아봐도 해당 함수는 보안상의 위험이 있으니 사용을 지양하라고 한다.

 

해당 함수를 대체하기 위해 동일한 결과를 제공하는 함수를 하단에 공유한다.

function evaluateInequality(inequalityString) {
    // 정규 표현식을 사용하여 부등식 패턴을 추출
    const regex = /^([-+]?\d+(\.\d*)?)\s*([<>]=?)\s*([-+]?\d+(\.\d*)?)$/;
    const match = inequalityString.match(regex);

    if (!match) {
        throw new Error('Invalid inequality format');
    }

    const leftOperand = parseFloat(match[1]);
    const operator = match[3];
    const rightOperand = parseFloat(match[4]);

    // 부등식을 평가하여 결과를 반환
    switch (operator) {
        case '>':
            return leftOperand > rightOperand;
        case '>=':
            return leftOperand >= rightOperand;
        case '<':
            return leftOperand < rightOperand;
        case '<=':
            return leftOperand <= rightOperand;
        case '=':
            return leftOperand === rightOperand;
        default:
            throw new Error('Unsupported operator');
    }
}

// 사용 예시
try {
    const result1 = evaluateInequality("0 >= 0");
    console.log(result1); // true

    const result2 = evaluateInequality("-1 >= 0");
    console.log(result2); // false

    const result3 = evaluateInequality("abc >= 0"); // 예외 발생: Invalid inequality format
} catch (error) {
    console.error(error.message);
}
반응형

'JavaScript' 카테고리의 다른 글

[JS] 타임 슬라이더 구현(자동 스크롤)  (0) 2024.11.25
[지도 API] leaflet  (0) 2024.11.22
Object의 value로 index접근하는 방법  (0) 2022.11.24
[openLayers_proj] 좌표계 변환  (0) 2022.11.21
[지도API] Open Layers_2  (0) 2022.11.21