2016-09-16 37 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/