我有一个输入字段,在其中我希望前4个字符仅是数字,之后只允许点(。),然后只允许2个数字。例如:9999.99
我还希望如果要输入其他内容,则不应在输入字段中输入。
为此,我创建了一个正则表达式为:^[0-9]{4}+\.+[0-9]{2}+$
HTML:<input type="text" (keypress)="onKeydown($event)">
TS:
regex = '/^[0-9]{4}+\.+[0-9]{2}+$/';
onKeydown(event) {
if(event.target.value.match(this.regex)) {
return true;
} else return false;
}
但是我想我在这里做错了什么。请让我知道。
谢谢。
答案 0 :(得分:0)
您的正则表达式中不需要+
(选择1个或更多匹配项)。
相反,您需要|
(或)来捕获两种情况:输入不包含点和添加点。
尝试类似这样的操作:/^(?:\d{0,4}|\d{4}\.\d{0,2})$/
。
我添加了?:
(非捕获组标记)以排除匹配组,但这不是必需的。
更新:以下是使用oninput
事件处理程序的快速草图:
var regex = /^(?:\d{0,4}|\d{4}\.\d{0,2})$/;
var lastValue = "";
function onInput(e) {
var currentValue = e.target.value;
if (!currentValue.match(regex))
e.target.value = lastValue;
else
lastValue = currentValue;
}
<input type="text" oninput="onInput(event)">