我在Titanium中有以下代码来检查用户输入是否为非数字:
textBox.addEventListener('change', function (e) {
var patt = new RegExp('^\d+(\.\d{1,2})?$','gi');
if (e.value.match(patt) != null) {
//insert action here
}
});
我个人想在用户尝试输入非十进制字符时删除非十进制字符。但是,为了做到这一点,我需要使用replace(inversePatt, "")
。我想知道,我如何获得正则表达式的倒数?
答案 0 :(得分:3)
要删除非小数字符,您应该能够匹配每一个:
[^\.\d]
组返回。
([^。\ d]应该有效 - 这里不需要转义点)
克拉反转在括号内。 它基本上意味着“不是一个点或一个数字”。
退房:
修改强> 我想这有你的答案:
Restricting input to textbox: allowing only numbers and decimal point
编辑2 : 你也可以用这个:
var success = /^\d*\.?\d{0,2}$/.test(input);
按照:
Limiting input field to one decimal point and two decimal places
你也可以在小数点之前要求一个数字,如下所示:
var success = /^\d+\.?\d{0,2}$/.test(input); // uses + instead of *
答案 1 :(得分:1)
如果你想在关键事件中处理字符,下面的内容应该有用
作为验收验证,请使用\d
之类的内容来确保数字存在。
# ^(?:\.|\d*|\d+\.|\d*\.\d+)$
# "^(?:\\.|\\d*|\\d+\\.|\\d*\\.\\d+)$"
^ # BOL
(?:
\. # dot, or
|
\d* # optional digits (if no digits, matches ^$)
|
\d+ \. # digits and dot
|
\d* \. \d+ # optional digits and dot and digits
)
$ # EOL