Javascript 正則表達式 - 使用白名單清理字串
我有一個非常基本的正則表達式問題。我正在嘗試使用白名單清理輸入欄位。我只想允許數字和小數點進入我的欄位。如果用戶輸入了無效字符,我希望將其從輸入中移除,並用乾淨的字串替換輸入。
我可以讓它只用數字運作,但我無法將小數點加入允許的字元池中:
var sanitize = function(inputValue) {
var clean = "",
numbersOnly = /[^0-9]/g; // only numbers & a decimal place
if (inputValue) {
if (numbersOnly.test(inputValue)) {
// if test passes, there are bad characters
for (var i = 0; i < inputValue.length; i++) {
clean += (!numbersOnly.test(inputValue.charAt(i))) ? inputValue.charAt(i) : "";
}
if (clean != inputValue) {
makeInputBe(clean);
}
}
}
};
工作小提琴
答案#1
與其逐個字元迴圈處理你的輸入並驗證每個字元,你可以對基本的清理操作這樣做:
var s = '123abc.48@#'
s = s.replace(/[^\d.]+/g, '');
//=> 123.48
附註: 這將不會檢查輸入中是否有多於一個小數點(不確定這是否是要求)。
