정밀도가 2 인 10 진수의 정규식은 무엇입니까?
유효한 예 :
123.12
2
56754
92929292929292.12
0.21
3.1
잘못된 예 :
12.1232
2.23332
e666.76
소수점은 선택 사항 일 수 있으며 정수도 포함될 수 있습니다.
정밀도가 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})?$
반복을 중지하고 진수 값의 정수 부분에 제한을 줄 수 있습니다.
-?
처럼 -?\d+(\.\d{1,2})?
. OP의 질문에 포함되지 않았기 때문에 음수를 포함하거나 소수점으로 시작하지 않았습니다. 더 일반적인 숫자 형식에는 확실히 유효합니다. 주석 스레드는 ".21"을 처리하는 몇 가지 방법을 제공합니다.
^[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
+
첫 번째 닫는 paren 후^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
대신 \.
때문에 .
작동하지만, 모든 문자 (다만 소수 자릿수)과 일치처럼 보일 것입니다. 예를 들어, 모두 1z23
하고 1.23
당신이 그것을 탈출하지 않으면 유효한 것으로 간주 될 수있다
선택적 빼기 부호를 포함시키고 015
(8 진수로 오인 할 수있는) 숫자를 허용하지 않으려면 다음과 같이 작성하십시오.
-?(0|([1-9]\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
주요 답변은 유효 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 => "
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 진수 숫자의 유효성을 검사합니다. 날씨 숫자는 소수점 이하 자릿수를 갖습니다. 그렇지 않으면 "오른쪽 숫자"라고 표시됩니다. 경고 메시지가 나타납니다.
감사... :)