소수점 이하 자릿수로 숫자 확인

소수점 이하 자릿수로 숫자 확인

다음과 같은 표현이 있습니다.

echo “B1500.00” | egrep '^[(-|+)]?[0-9]+(\.[0-9]{2})?$'

소수점 이하 자릿수로 숫자를 확인하고 있는데 필드에 숫자가 아닌 항목이 있으면 오류가 발생하고 싶습니다.

위의 표현에는 아무런 문제가 없는 것 같습니다. 1500.00 또는 -1500.00과 같은 실제 숫자가 있는 경우 표현식은 숫자로 반환됩니다. 나는 뭔가를 놓치고 있다고 확신합니다.

답변1

egrep이러한 따옴표는 일치시킬 표현식의 일부로 전달되는 유니코드 문자입니다.

또한 첫 번째 문자 클래스가 정확히 원하는 것이 아닐 수도 있습니다. 다음을 시도해 보세요.

echo B1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'

일치하는 항목이 없으며

echo 1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'

일치합니다1500.00

내가 제공하는 문자 클래스는 정확히 일치 +하거나 -동시에 원래 문자 클래스 |와 여는 괄호 및 닫는 괄호도 일치합니다. 제 생각에는 이것이 아마도 여러분이 원하는 것이 아닐 것입니다.

egrepCostas가 지적했듯이 다음과 같이 전체 라인을 일치시키고 시작 및 끝 앵커를 무시하고 싶다는 것을 알 수 있습니다 .

echo 1500.00 | egrep -x '[-+]?[0-9]+(\.[0-9]{2})?'

관련 정보