Javascript Regex - membersihkan string dengan senarai putih
Saya mempunyai masalah RegEx yang sangat asas. Saya cuba menapis medan input dengan senarai putih. Saya cuba untuk membenarkan hanya nombor dan perpuluhan dalam medan saya. Jika pengguna menaip aksara yang tidak sah, saya ingin menyingkirkannya dari input dan menggantikan input tersebut dengan rentetan yang bersih.
Saya boleh menjadikannya berfungsi dengan hanya nombor, tetapi saya tidak dapat memasukkan perpuluhan ke dalam kumpulan aksara yang dibenarkan:
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);
}
}
}
};
Biola yang berfungsi
Jawapan #1
Daripada mengulang input anda satu persatu dan mengesahkan setiap aksara, anda boleh melakukan ini untuk operasi pembersihan asas:
var s = '123abc.48@#'
s = s.replace(/[^\d.]+/g, '');
//=> 123.48
PS: Ini tidak akan memeriksa jika terdapat lebih daripada 1 titik perpuluhan dalam input (tidak pasti jika itu adalah keperluannya).
