2016-09-16 74 views
1

我正在使用RegEx來驗證某些輸入,jQuery正在按預期工作。如果用戶不添加它,我想在小數點之前加一個0。設置十進制數的格式

例如,

.50 to 0.50 
-.50 to -0.50 

如何做到這一點?

代碼:

$(document).ready(function() { 
 
    $('#btnval').click(function() { 
 
    var floatRegex = new RegExp(/^-?[0-9]+([\,|\.]{0,1}[0-9]{2}){0,1}$/); 
 
    var currentSetTextBoxValue = $('#txtval').val(); 
 
    //alert(currentSetTextBoxValue); 
 
    var validateInput = floatRegex.test(currentSetTextBoxValue); 
 
    alert(validateInput); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input type="text" id="txtval" /> 
 
<input type="button" value="Get textbox Value" id="btnval" />

+1

這是正常格式'toFixed(2)'產生。 – Barmar

+0

僅供參考,'{0,1}'可以簡化爲'?',這意味着某些內容是可選的。 – Barmar

+0

刪除了對jquery的引用,因爲jquery僅用於click事件/ val,並且與問題無關。 –

回答

1

變化[0-9]+[0-9]*,以便它允許零位,而不是requireing的至少一個。

$(document).ready(function() { 
 
    $('#btnval').click(function() { 
 
    var floatRegex = new RegExp(/^-?[0-9]*([\,|\.]{0,1}[0-9]{2}){0,1}$/); 
 
    var currentSetTextBoxValue = $('#txtval').val(); 
 
    //alert(currentSetTextBoxValue); 
 
    var validateInput = floatRegex.test(currentSetTextBoxValue); 
 
    alert(validateInput); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input type="text" id="txtval" /> 
 
<input type="button" value="Get textbox Value" id="btnval" />

0

您可以修復這樣的值,如果你需要將其轉換後:

if(currentSetTextBoxValue.indexOf('.') === 0){ 
    currentSetTextBoxValue = '0' + currentSetTextBoxValue; 
} 
if(currentSetTextBoxValue.indexOf('.') === 1 && currentSetTextBoxValue.indexOf('-') === 0){ 
    currentSetTextBoxValue = '-0.' + currentSetTextBoxValue.split('.')[1]; 
} 

https://jsfiddle.net/str59woa/3/

0

您可以使用正則表達式替換輸入!這個正則表達式尋找。要麼 -。在字符串的開頭,它將用0或-0代替它。取決於它發現的內容,如果它不匹配,字符串將會相同。

$(document).ready(function() { 
 
    $('#btnval').click(function() { 
 
    var floatRegex = new RegExp(/^-?[0-9]+([\,|\.]{0,1}[0-9]{2}){0,1}$/); 
 
    var currentSetTextBoxValue = $('#txtval').val().replace(/^(\-)?\./, "$10."); 
 
    //alert(currentSetTextBoxValue); 
 
    var validateInput = floatRegex.test(currentSetTextBoxValue); 
 
    alert(validateInput); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input type="text" id="txtval" /> 
 
<input type="button" value="Get textbox Value" id="btnval" />

https://jsfiddle.net/punsm9o0/1/