Javascript Regex - sanitiziraj niz s bijelom listom
Imam vrlo osnovni problem s RegEx-om. Pokušavam očistiti polje za unos pomoću bijele liste. Pokušavam dopustiti samo brojeve i decimalu u moje polje. Ako korisnik unese nevažeći znak, želim ga ukloniti iz unosa i zamijeniti unos čistim nizom.
Mogu to natjerati da radi samo s brojevima, ali ne mogu dobiti decimalni broj u dopušteni skup znakova:
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);
}
}
}
};
Radna violina
Odgovor #1
Umjesto da prolazite kroz vaš unos znak po znak i provjeravate svaki znak, možete ovo učiniti za osnovnu operaciju čišćenja:
var s = '123abc.48@#'
s = s.replace(/[^\d.]+/g, '');
//=> 123.48
PS: Ovo neće provjeriti ima li više od jedne decimalne točke u unosu (nisam siguran je li to zahtjev).
