[英]Inverse of a regular expression (JavaScript/Titanium)
我在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, "")
。 我想知道,如何獲得正則表達式的逆函數?
要刪除非十進制字符,您應該能夠匹配每個:
[^\.\d]
組返回。
([^。\\ d]應該可以工作,這里的點不需要轉義)
克拉在方括號內倒置。 它的基本意思是“不是點或數字”。
查看:
編輯:我認為這有你的答案:
編輯2 :您也可以使用此:
var success = /^\d*\.?\d{0,2}$/.test(input);
按照:
您還可以要求小數點前的數字,如下所示:
var success = /^\d+\.?\d{0,2}$/.test(input); // uses + instead of *
如果要在關鍵事件中處理字符,則應執行以下操作。
作為接受確認,請使用\\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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.