逆正则表达式(JavaScript / Titanium)

时间:2013-10-29 16:03:48

标签: javascript android regex titanium inverse

我在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, "")。我想知道,我如何获得正则表达式的倒数?

2 个答案:

答案 0 :(得分:3)

要删除非小数字符,您应该能够匹配每一个:

[^\.\d]

组返回。

([^。\ d]应该有效 - 这里不需要转义点)

克拉反转在括号内。 它基本上意味着“不是一个点或一个数字”。

退房:

http://www.scriptular.com

修改 我想这有你的答案:

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