我正在尝试实现这个正则表达式检查。(1 个整数,3 位数字)
有效的:
- 0.236
- 0.21
- 1.231
- 1.01
无效的:
- 12.23
- 12321
- 0.21323
我希望只有 1 位数字后跟只有 0-3 位小数的小数。
任何帮助都会很棒。我试过这个:
^(([0-9]{1})?(?=\.)[0-9]{0,3})|([0-9]{1})$
但没有锁。
编辑:我应该补充说我正在使用一个名为 inputmask 的 JQuery 插件。我希望输入掩码只接受我的要求。
我正在尝试实现这个正则表达式检查。(1 个整数,3 位数字)
有效的:
无效的:
我希望只有 1 位数字后跟只有 0-3 位小数的小数。
任何帮助都会很棒。我试过这个:
^(([0-9]{1})?(?=\.)[0-9]{0,3})|([0-9]{1})$
但没有锁。
编辑:我应该补充说我正在使用一个名为 inputmask 的 JQuery 插件。我希望输入掩码只接受我的要求。
我希望只有 1 个整数后跟一个只有 0-3 位小数的小数。
我认为“1 个整数”是指一个数字,12
一个整数也是如此。如果是这样:
\d\.\d{0,3}
这匹配一个数字,后跟一个.
零到三个数字。如果您想进一步断言它与整个字符串匹配,请在任一端添加锚点:
^\d\.\d{0,3}$
请注意,您给出的规则允许1.
,这似乎是您可能不想要的。如果你不这样做,那么我们需要做更多的工作:
^\d(?:\.\d{1,3})?$
也就是说:一位数字可选地后跟一个.
1-3 位数字。它有“整个字符串”锚,如果你不想要它们,请将它们移除。
使用最后一个的实时示例:
var input = document.querySelector("input");
var rex = [
/\d\.\d{0,3}/,
/^\d\.\d{0,3}$/,
/^\d(?:\.\d{1,3})?$/
];
input.oninput = input.onpaste = input.onkeypress = updateDisplay;
function updateDisplay() {
rex.forEach(function(r, index) {
var display = document.getElementById("r" + index);
if (!input.value) {
display.innerHTML = "--";
} else if (input.value.match(r)) {
display.innerHTML = "valid";
} else {
display.innerHTML = "INVALID";
}
});
}
<input type="text">
<p><code>/\d\.\d{0,3}/</code> says: <span id="r0"></span></p>
<p><code>/^\d\.\d{0,3}$/</code> says: <span id="r1"></span></p>
<p><code>/^\d(?:\.\d{1,3})?$/</code> says: <span id="r2"></span></p>
为此,请jquery-inputmask
使用
<input id="example2" data-inputmask-regex="/^\d{1}\.\d{0,3}$/" />
然后在你的 JavaScript 文件中,添加这个
$(document).ready(function(){
$("#example2").inputmask("Regex");
});
这是正则表达式细分
^
- 正则表达式必须以此表达式开头
\d{1}
- 从 0 到 9 正好是 1 位
\.
- 后面是句号。重要的是要注意句点必须转义
\d{0,3}
- 后跟 0 到 3 位数字
$
- 正则表达式必须以此表达式结尾
我测试了你所有的例子。