IT

정밀도가 2 인 소수에 대한 간단한 정규식

lottoking 2020. 4. 1. 08:16
반응형

정밀도가 2 인 소수에 대한 간단한 정규식


정밀도가 2 인 10 진수의 정규식은 무엇입니까?

유효한 예 :

123.12
2
56754
92929292929292.12
0.21
3.1

잘못된 예 :

12.1232
2.23332
e666.76

소수점은 선택 사항 일 수 있으며 정수도 포함될 수 있습니다.


유효한 정규식 토큰은 구현에 따라 다릅니다. 내가 아는 가장 일반적인 형태는 다음과 같습니다.

[0-9]+(\.[0-9][0-9]?)?

가장 컴팩트 한

\d+(\.\d{1,2})?

둘 다 소수점 이하 자릿수 앞뒤에 한 자리 이상이 있어야한다고 가정합니다.

전체 문자열이이 형식의 숫자가되도록하려면 표현식을 시작 및 끝 태그 (예 : Perl 형식)로 랩핑하십시오.

^\d+(\.\d{1,2})?$

추가 : ()에 분수 부분을 감쌌 습니까? 선택적으로 만들 수 있습니다. 여기에는 "12"와 같은 양식이 제외됩니다. 포함하면 더 비슷 ^\d+\.?\d{0,2}$합니다.

추가 : 이 형식 ^\d{1,6}(\.\d{1,2})?$사용 하여 반복을 중지하고 10 진수 값의 전체 부분을 제한하십시오.


^[0-9]+(\.[0-9]{1,2})?$

그리고 정규 표현식은 읽기가 끔찍하기 때문에 이해하기가 쉽지 않으므로 여기에 자세한 내용이 있습니다.

^                         # Start of string
 [0-9]+                   # Require one or more numbers
       (                  # Begin optional group
        \.                # Point must be escaped or it is treated as "any character"
          [0-9]{1,2}      # One or two numbers
                    )?    # End group--signify that it's optional with "?"
                      $   # End of string

당신은 대체 할 수있는 [0-9]\d(을 포함한 대부분의 정규식 구현에 PCRE 가장 일반적인). [0-9]읽기 쉽다고 생각 되는대로 그대로 두었 습니다.

또한, 내가 그것을 확인하는 데 사용한 간단한 파이썬 스크립트는 다음과 같습니다.

import re
deci_num_checker = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""")

valid = ["123.12", "2", "56754", "92929292929292.12", "0.21", "3.1"]
invalid = ["12.1232", "2.23332", "e666.76"]

assert len([deci_num_checker.match(x) != None for x in valid]) == len(valid)
assert [deci_num_checker.match(x) == None for x in invalid].count(False) == 0

선택적 빼기 부호를 포함시키고 015(8 진수로 오인 할 수있는) 숫자를 허용하지 않으려면 다음과 같이 작성하십시오.

-?(0|([1-9]\d*))(\.\d+)?

천 단위 구분 기호가없는 숫자의 경우이 간단한 소형 정규 표현식이 좋습니다.

\d+(\.\d{2})?|\.\d{2}

또는 2의 정밀도로 제한되지 않습니다.

\d+(\.\d*)?|\.\d+

후자 일치
1
100
100
100.74
100.7
0.7
0.7
0.72

그리고 그것은 빈 문자열과 일치하지 않습니다 (\ d *.? \ d *처럼)


나는 이것을 소수점 이하 두 자리까지 사용합니다.
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)통과 :
.25
0.25
10.25
+0.25

는 통과하지 않습니다 :
-.25
01.25
1.
1.256


^[0-9]+(\.([0-9]{1,2})?)?$

12.받아 들여지 는 것을 만들 것 입니다. 이것은 일반적으로 받아 들여지는 것이 아니라 만약 "유연성"이 필요한 경우, 한 가지 방법입니다. 물론 [0-9]로 대체 할 수는 \d있지만이 방법으로 더 읽기 쉽습니다.


이 시도

 (\\+|-)?([0-9]+(\\.[0-9]+))

긍정적이고 부정적인 징후도 허용됩니다.


주요 답변은 유효 5.하거나 5,입력 하기 때문에 잘못되었습니다

이 코드는 그것을 처리합니다 (그러나 예제에서는 음수가 금지되어 있습니다).

/^[0-9]+([.,][0-9]{1,2})?$/;

결과는 다음과 같습니다.

true => "0"/ true => "0.00"/ true => "0.0"/ true => "0,00"/ true => "0,0"/ true => "1,2"true => "1.1"/ true => "1"/ true => "100"true => "100.00"/ true => "100.0"/ true => "1.11"/ true => "1,11"/ false => "-5"/ false => "-0.00"/ true => "101"/ false => "0.00.0"/ true => "0.000"/ true => "000.25"/ false => ".25" / true => "100.01"/ true => "100.2"/ true => "00"/ false => "5." / false => "6,"/ true => "82"/ true => "81,3"/ true => "7"/ true => "7.654"


preg_match("/^-?\d+[\.]?\d\d$/", $sum)

일반적으로 무제한 소수점 이하 자릿수 :

^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$.


당신은을 할 필요가 없습니다 ee666.76고려?

(e|0-9)\d*\d.\d{1,2)

내 대답도 추가하면 누군가가 유용하다고 생각하거나 올바른 것일 수도 있습니다.

function getInteger(int){
  var regx = /^[-+]?[\d.]+$/g;
  return regx.test(int);
}


alert(getInteger('-11.11'));

이것은 나와 함께 일했다 :

(-?[0-9]+(\.[0-9]+)?)

그룹 1 은 실수이고 그룹 2 는 분수입니다.


내 프로젝트로 시도했습니다. 이렇게하면 + | -부호가있는 숫자도 허용됩니다 .

/^(\+|-)?[0-9]{0,}((\.){1}[0-9]{1,}){0,1}$/

Chrome 56은 유형 번호와 함께 이러한 종류의 패턴을 허용하지 않습니다 (Chrome 56은 11.11. 추가.). 유형을 텍스트로 진행합니다.


이것은 지수와 최대 2 자리의 십진수를 허용합니다.

^[+-]?\d+(\.\d{2}([eE](-[1-9]([0-9]*)?|[+]?\d+))?)?$

데모


 function DecimalNumberValidation() {
        var amounttext = ;
            if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
            alert('Please enter only numbers into amount textbox.')
            }
            else
            {
            alert('Right Number');
            }
    }

이 함수는 10 진수 숫자의 유효성을 검사합니다. 날씨 숫자는 소수점 이하 자릿수를 가지고 있습니다. 경고 메시지가 나타납니다.

감사... :)

참고 URL : https://stackoverflow.com/questions/308122/simple-regular-expression-for-a-decimal-with-a-precision-of-2

반응형