我只想检查输入值是否为数字和/或两个数字之间是否有连字符。逗号应改为点(1,23 -> 1.23),空格应删除。
允许的数值是:
1
2
1-2
34-45不允许:
-2
1-
-
any letters我的尝试:
$('form').submit(function( event ) {
$('input').each(function(index, element) {
$(element).val($(element).val().replace(",", ".").replace(" ", "")); // replace comma, delete spaces
if (!$.isNumeric($(element).val())) {
alert("error");
event.preventDefault();
}
// else submit
});我认为isNumeric是错误的,因为'12-5‘应该是一个有效值.
发布于 2014-07-26 20:19:48
首先要做的是用,替换.并删除空格。这可以通过以下方式实现:
var input = "1 2 3. 4 - 56,78"; input.replace(/ /g,"").replace(/,/g,".")
然后,您必须应用regex:
/^\d+(\.\d+|\d*)(-?\d+(\.\d+|\d*)|\d*)$/
小提琴:http://jsfiddle.net/y5ACh/1/
regex解释:http://www.regexr.com/397j6
忘记提到-我假设像.2-31这样的字符串是无效的($.isNumeric(".2")返回true,所以我们不能在每个字符串上使用$.isNumeric,在-之前和之后)
若要使浮点数无效,需要删除(\.\d+|\d*)组:http://jsfiddle.net/y5ACh/2/
如果整数无效,则需要删除\d*组:http://jsfiddle.net/y5ACh/3/
https://stackoverflow.com/questions/24973161
复制相似问题