2011-01-10 6 views
-1

0에서 99.999 사이의 숫자와 일치하는 정규식이 필요합니다 (99,999도 유효합니다).정규식과 일치하는 숫자 0-99.999

유효한 예 :

1,1 
99.9 
12.876 
1,777 

잘못된 예 :

9837,83 
-12,24 
11.1112 
+4

나는 당신의 요구 사항을 이해하지 않습니다. 당신은 그것이 0으로 시작하고 99.999 또는 99,999로 끝나야한다고 말합니까? 그러나 당신의 예는 이것을 보여주지 않습니다. 별도의 줄을 써서 사례를 명확하게 만들 수 있습니까? –

+0

또한 어떤 개발 환경에서 작업하고 있습니까? –

+0

@ElRonnoco : "0-99.999 사이의 숫자"([쉼표] [http://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma])를 사용하여 거의 볼 수 있습니다. –

답변

1

윌이 작품?

[0-9]{1,2}[.,][0-9]{1,3} 

이이 유사한 물건을 일치 :

  • 0.0/01,1
  • 99,999/09.009

그러나이 같은하지 물건 :

  • 099,999/09.0090
  • .0/,1/1/는 도움이되기를 바랍니다.

  • +0

    만약 당신이 10 10 또는 25 재료를 의미한다면 그것은 의도적으로입니다. 요청자가 그와 일치하기를 원하는 것을 결코 보지 못했습니다. 내가 그 게시물에 말 : –

    2
    ^\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 
    
    2

    당신이 숫자는 정규식을 사용하지 말아야 특정 범위 내에 확인하고자하는 경우, 그것은 너무 멀리 당신이하고있는 일의 논리와 하드에에서 제거 디버그. 먼저 쉼표 대신 소수점을 사용합니다. 그런 다음 범위를 확인하십시오.

    예 (자바 스크립트)

    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); 
    }; 
    
    +0

    +1 정규식은 잔인한 – marcog

    +0

    이며 더하기로, 그것은 10 진수 및 천 단위 구분 기호에 대한 로케일을 고려합니다 –

    +0

    downvoting 때 의견을 남겨주세요! :) 감사 –

    1

    다음은 작동합니다

    ^\d{1,2}((,|.)\d{1,3})?$ 
    
    관련 문제