2017-07-02 6 views
0

1,000,500のような通貨パターンで入力するとテキスト入力があります。今問題は、ユーザが000.00, 0,0000,000, 000,438,339のような数字を入力できることです。形式正規表現を使用して通貨パターンでテキスト入力

誰かがこのフォーマット以外の最初のゼロを削除する正規表現を手助けできるかどうかを知りたいのですが、0.00です。

私は最初のゼロ例えば00または0000後に小数点をかけることなく、複数のゼロを入力した場合、それはそう0.を返す必要があります:

000.00 should be 0.00 
0,0000,000 should be 0 
000,438,339 should be 438,339 

私はこの'0000.00'.replace(/^(00*)(.*)$/, '$2')しかしIDにはないやっていましたすべてのエッジケースをカバーします。

答えて

0

/^0+(\d+(\.\d{1,2})?)$/は、文字列からカンマを削除した後に使用できます。これは、あなたがリストされてきた3例を取り上げます。

'0,0000,000'.replace(/,/g, "").replace(/^0+(\d+(\.\d{1,2})?)$/, '$1') 
// '0' 

'000.00'.replace(/,/g, "").replace(/^0+(\d+(\.\d{1,2})?)$/, '$1') 
// '0.00' 

'000,438,339'.replace(/,/g, "").replace(/^0+(\d+(\.\d{1,2})?)$/, '$1') 
// '438339' 
0

チェック次code.The一般的な考え方は、入力値のドット表記がある場合は最初にチェックすることです。次に、ドット位置で値を分割します。条件iが数値の最初の部分(00または000または10)が1で分割され、結果が0に等しくないかどうかを確認します。この結果、整数以下コメントスニペットを

$('#myButton').on('click',function(){ 
 
    var currency=$('#myInput').val(); 
 
    var search=currency.indexOf("."); 
 
    if(search){ 
 
    currency=currency.split("."); 
 
    if((currency[0]/1)==0){ 
 
     currency[0]="0";  
 
    var newNum=currency[1].replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
 
     $('#myInput').val(currency[0]+"."+newNum); 
 
    }else{ 
 
     var newNum=currency[1].replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
 
     $('#myInput').val(Math.round(parseInt(currency[0]))+"."+newNum); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="myInput" /> 
 
    <button id="myButton">Get Currency</button>

+0

我々はOPは彼の質問 'jQuery'をタグ付けしていない場合は特に、任意のより多くのjQueryを使用していません。 –

0

:条件付きの場合部はzero's.Afterこれはない私は、最初の入力番号の最​​初の部分のためのtoLocaleString()メソッドを使用して値を再入力値をリセットします効果的に達成したいことを示しています。この関数は、指定された値を目的のフォーマットにフォーマットします。

// Defining input cases variable. 
 
var caseOne = '000.00'; 
 
var caseTwo = '00,0000,000'; 
 
var caseThree = '000,438,339'; 
 

 
// Assigning a given case to the someAmount variable (any of the cases above). 
 
// For the purpose of this illustration, we assigned caseThree as value to someAmount. 
 
var someAmount = caseThree; 
 

 
// formatInput function (to format the given input case). 
 
function formatInput(amountToFormat) { 
 
    if (amountToFormat.match(/^0*(\.)(0*)$/)) { 
 
     console.log('0'.concat(amountToFormat.replace(/^0*(\.)(0*)$/, '$1' + '$2'))); 
 
    } 
 
    if (amountToFormat.match(/^0*(\,)([0-9]+)(\,)([0-9]+)$/)) { 
 
     var blockTwo = amountToFormat.replace(/^0*(\,)(0*)(\,)(0*)$/, '$2'); 
 
     var blockFour = amountToFormat.replace(/^0*(\,)(0*)(\,)(0*)$/, '$4'); 
 
     if (eval(blockTwo) != 0 && eval(blockFour) != 0) { 
 
      console.log(amountToFormat.replace(/^0*(\,)([0-9]+)(\,)([0-9]+)$/, '$2' + '$3' + '$4')); 
 
     } else { 
 
      console.log('0'); 
 
     } 
 
    } 
 
} 
 

 
// Use the formatInput function where needed by passing in the value 
 
// of the input to be formatted as someAmount. 
 
// Expected outputs: 
 
// 0.00 for caseOne, 0 for caseTwo, and 438,339 for caseThree. 
 

 
formatInput(someAmount); 
 
// Expected output for the purpose of this illustration: 438,339