0에서 99.999 사이의 숫자와 일치하는 정규식이 필요합니다 (99,999도 유효합니다).정규식과 일치하는 숫자 0-99.999
유효한 예 :
1,1
99.9
12.876
1,777
잘못된 예 :
9837,83
-12,24
11.1112
0에서 99.999 사이의 숫자와 일치하는 정규식이 필요합니다 (99,999도 유효합니다).정규식과 일치하는 숫자 0-99.999
유효한 예 :
1,1
99.9
12.876
1,777
잘못된 예 :
9837,83
-12,24
11.1112
윌이 작품?
[0-9]{1,2}[.,][0-9]{1,3}
이이 유사한 물건을 일치 :
0.0
/01,1
99,999
/09.009
그러나이 같은하지 물건 :
099,999
/09.0090
.0
/,1
/1
/는 도움이되기를 바랍니다.만약 당신이 10 10 또는 25 재료를 의미한다면 그것은 의도적으로입니다. 요청자가 그와 일치하기를 원하는 것을 결코 보지 못했습니다. 내가 그 게시물에 말 : –
^\d{1,2}(?:[.,]\d{1,3})?$
해야합니다.
설명 :
^ # anchor the match at the start of the string
\d{1,2} # match one or two digits
(?: # optionally match the following group:
[.,] # a . or ,
\d{1,3} # 1-3 digits
)? # end of optional group
$ # anchor the match the end of the string
당신이 숫자는 정규식을 사용하지 말아야 특정 범위 내에 확인하고자하는 경우, 그것은 너무 멀리 당신이하고있는 일의 논리와 하드에에서 제거 디버그. 먼저 쉼표 대신 소수점을 사용합니다. 그런 다음 범위를 확인하십시오.
예 (자바 스크립트)
function isValid(inputString)
{
var number=parseFloat(inputString.replace(',','.'));
return (number>=0 && number <=99.999);
}
업데이트 대답
위의 솔루션은 정밀도가 더 이상 세 이상의 소수점이하는 OP의 요구 사항을 설명하지 않습니다.
function isValid(inputString){
var number=parseFloat(inputString.replace(',','.'));
validPrecision = true;
if (inputString.split('.')[1]) {
validPrecision=inputString.split('.')[1].length<=3;}
return (number>=0 && number <=99.999 && validPrecision);
};
+1 정규식은 잔인한 – marcog
이며 더하기로, 그것은 10 진수 및 천 단위 구분 기호에 대한 로케일을 고려합니다 –
downvoting 때 의견을 남겨주세요! :) 감사 –
다음은 작동합니다
^\d{1,2}((,|.)\d{1,3})?$
나는 당신의 요구 사항을 이해하지 않습니다. 당신은 그것이 0으로 시작하고 99.999 또는 99,999로 끝나야한다고 말합니까? 그러나 당신의 예는 이것을 보여주지 않습니다. 별도의 줄을 써서 사례를 명확하게 만들 수 있습니까? –
또한 어떤 개발 환경에서 작업하고 있습니까? –
@ElRonnoco : "0-99.999 사이의 숫자"([쉼표] [http://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma])를 사용하여 거의 볼 수 있습니다. –