精度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})?
どちらも、両方とも小数点の前に少なくとも1桁、小数点以下に1桁あると想定しています。
文字列全体がこの形式の数であることを要求するには、式を(Perlの形式で)次のように開始タグと終了タグで囲みます。
^\d+(\.\d{1,2})?$
10進数の前に先行数字がない数字(.12
)と、末尾にピリオドがある整数()を照合し12.
、単一のピリオド(.
)の入力を除外するには、次のようにします。
^(\d+(\.\d{0,2})?|\.?\d{1,2})$
小数部分をラップし()?
てオプションにしました。これは、「12.
含む」のようなフォームを除外することに注意してください^\d+\\.?\d{0,2}$
。
^\d{1,6}(\.\d{1,2})?$
繰り返しを停止し、10進数値の全体に制限を与えるために使用します。
-?
のように、-?\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
ほとんどの正規表現の実装(最も一般的なPCREを含む)では、[0-9]
と置き換えることができます。読みやすくするために残しました。\d
[0-9]
また、これは私がそれをチェックするために使用した簡単なPythonスクリプトです:
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
+
最初の閉じ括弧を削除します^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
代わりにすべき\.
です.
が、(小数点以下の桁数だけでなく)任意の文字に一致します。たとえば、両方とも1z23
、1.23
エスケープしない場合は有効と見なされます
オプションのマイナス記号を含め、015
(8進数と間違われる可能性がある)などの数値を禁止するには、次のように記述します。
-?(0|([1-9]\d*))(\.\d+)?
私は2つの小数点以下の桁数までは、このいずれかを使用します
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
渡し:
0.25
0.25
10.25
0.25は
渡しません。
-.25
01.25
1
1.256
それはVALIDSので、メインの答えが間違っています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 => "
あなたが行う必要はありませんe
にe666.76
考慮?
と
(e|0-9)\d*\d.\d{1,2)
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進数の天気番号に小数位があるかどうかを検証します。それ以外の場合は、「正しい数字」と表示されます。「金額テキストボックスには数字のみを入力してください。」警告メッセージが表示されます。
ありがとう... :)