通貨/通貨フィールドのJavaScript検証の記述を手伝ってください。
したがって、正規表現を指定してください(:)がある場合
また、私の地域では、フィールドの「$」のように通貨記号は必要ありませんです。
検証のために小数のみを特殊文字として含める。、および数値。
あなたは正規表現を使うことができます:
_var regex = /^\d+(?:\.\d{0,2})$/;
var numStr = "123.20";
if (regex.test(numStr))
alert("Number is valid");
_
小数点以下の厳密さが求められない場合は、単項(_+
_)演算子を使用して数値にキャストし、その妥当性を確認する方が簡単な場合があります。
_var numStr = "123.20";
var numNum = +numStr; // gives 123.20
_
数値文字列が無効な場合、NaN
(数値ではない)を返します。これは簡単にテストできます。
_var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
alert("numNum is not a number");
_
もちろん、ユーザーは小数点以下の桁数を追加できますが、number.toFixed(2)
を使用して余分な桁を切り捨てて小数点以下2桁に丸めることができます。 parseFloat
は入力に対する厳密性がはるかに低く、文字列が数字で始まる限り、文字列から見つけることができる最初の数字を取得します。 parseFloat("123abc")
は_123
_を生成します。
私は受け入れられた答えから私の答えを構築しました。
var regex = /^[1-9]\d*(((,\d{3}){1})?(\.\d{0,2})?)$/;
^[1-9]
番号は1〜9で始まる必要があります\d*
番号は、任意の桁数にできます(...)$
最後から次のグループを見てください(...)$
(...)?(...)?
オプションで2つのグループを探します。最初はカンマ用、2番目は小数用です。(,\d{3}){1}
カンマが1つ出現し、その後にちょうど3桁が続くのを探します\.\d{0,2}
0、1、または2桁が後に続く小数を探します。
この正規表現は、次のルールに基づいて機能します。
顧客が複数の小数点または複数のカンマを入力した場合、値は無効であり、受け入れられません。
無効な入力値の例
例はこちらにあります: http://jsfiddle.net/rat141312/Jpxu6/1/
[〜#〜]更新[〜#〜]
正規表現の[1-9]
を[0-9]
に変更することにより、1
未満の数値も検証できます。例:0.42、007
/[1-9]\d*(?:\.\d{0,2})?/
[1-9] - must start with 1 to 9
\d* - any number of other digits
(?: )? - non capturing optional group
\. - a decimal point
\d{0,2} - 0 to 2 digits
それはあなたのために働きますか?または多分 parseFloat :
var float = parseFloat( input );
私にとって、INRでのインド通貨の問題はありません
var regex = /^[1-9]{0,2}(,{0,1})(\d{2},)*(\d{3})*(?:\.\d{0,2})$/;
var a = '1,111.11';
regex.test(a);
let amount = document.querySelector('#amount'), preAmount = amount.value;
amount.addEventListener('input', function(){
if(isNaN(Number(amount.value))){
amount.value = preAmount;
return;
}
let numberAfterDecimal = amount.value.split(".")[1];
if(numberAfterDecimal && numberAfterDecimal.length > 3){
amount.value = Number(amount.value).toFixed(3);;
}
preAmount = amount.value;
})
<input type="text" id="amount">