[regex] 정밀도가 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)와 마침표 ( )가 있는 정수를 일치 시키려면 다음을 시도하십시오.12..

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

추가

분수 부분을 감싸서 ()?선택적으로 만듭니다. 여기에는 다음과 같은 형식이 12. 더 포함되지 않습니다 ^\d+\\.?\d{0,2}$.

추가

사용은 ^\d{1,6}(\.\d{1,2})?$반복을 중지하고 진수 값의 정수 부분에 제한을 줄 수 있습니다.


답변

^[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]+))

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