最大值应为99999999(末尾没有句点)。所以它应该接受:
- 123
- 1234
- 10000
- 100000
- 1000000
- 99000000
- 等等
我发现这段代码非常适合浮点:
HTML
<input type="text" class="numberOnly" name="example" value="" required>
jQuery:
$('.numberOnly').keyup(function() {
var valid = /^-?d+.d*$|^-?[d]*$/;
var number = /-d+.d*|-[d]*|[d]+.[d]*|[d]+/;
if (!valid.test($(this).val())) {
var n = this.value.match(number);
this.value = n ? n[0] : '';
}
});
它接受的值是:1.1、.1(它们甚至可以是负值。)
每当用户键入无效值时,例如1..,它会自动删除无效值,在这种情况下,无效值是第二个点。
我想为我的问题做一些类似的事情。这是我目前所掌握的,但显然不起作用。
HTML:
<input type="text" class="millions" name="example2" value="" required>
jQuery:
$('.millions').keyup(function() {
var valid = /^(d[0-0]{0,3}[,]d{0,9}[,])?d{0,9}$/;
var number = /d{0,9}[,](d{0,9}[,]d{0,9})?/;
if (!valid.test($(this).val())) {
var n = this.value.match(number);
this.value = n ? n[0] : '';
}
});
除了想知道我需要的正确regex格式外,还有人能解释一下有效和数量变量的用途吗?
非常感谢!
valid
模式是您对服务器端检查感兴趣的模式。它是用于检查整个字符串是否符合您的要求的模式。number
模式是用于在用户键入非法字符时进行替换的模式。number
模式需要更加宽松,以允许用户输入有效模式的子序列(例如1,0),然后用户可以将其完成为有效模式。
这种模式可以满足您的要求:
var valid = /^([1-9]d?(,d{3}){0,2}|[1-9]d{0,2}(,d{3})?|0)$/;
分解:
^(
-线路起点[1-9]d{0,2}
-第一组以一个非零数字开头,后跟0-1个数字(,d{3}){0,2}
-0-2或逗号分隔的三位数组|[1-9]d{0,2}(,d{3})?
-或三位前导组后接三位尾随组|0
-"0"本身有效)$
-线路末端
number
模式更为复杂,因为它必须允许尾随逗号,并允许末尾少于三位数字的组。