我试图实现这种正则表达式检查。 (1个整数,3位数)
有效:
无效:
我希望只有一位数跟随小数,只有0-3位小数。
任何帮助都会很棒。我试过这个:
^(([0-9]{1})?(?=\.)[0-9]{0,3})|([0-9]{1})$
但没有锁。
编辑:我应该补充一点,我使用的是一个名为inputmask的JQuery插件。我想输入掩码只接受我的要求。
答案 0 :(得分: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>
&#13;
答案 1 :(得分:1)
要使用jquery-inputmask
执行此操作,请使用此
<input id="example2" data-inputmask-regex="/^\d{1}\.\d{0,3}$/" />
然后在您的JavaScript文件中添加此
$(document).ready(function(){
$("#example2").inputmask("Regex");
});
这是Regex细分
^
- 正则表达式必须以此表达式
\d{1}
- 从0到9的正好1位数
\.
- 接下来是一段时间。重要的是要注意句点必须被转义
\d{0,3}
- 后跟0到3位
$
- 正则表达式必须以此表达式结束
我测试了你的所有例子。