Reputation: 47945
I have a string. I need to parse it, replacing any chars (except numbers (0
to 9
),,
and .
.
How can I do it with javascript?
Tried with :
string.replace(/[a-zA-Z]*/, "");
but seems it doesnt works. Also, I need ANY chars, not only a-Z (also ?, /, white space, and so on, expect, as said, , and .
Upvotes: 4
Views: 13966
Reputation: 92976
Use a negated character class
[^0-9,.]
and put in any character you don't want to be replaced, it will match all the others.
See it here on Regexr
You can optimize it by adding a quantifier +
, so that it replaces a sequence of those characters at once and not each by each.
string.replace(/[^0-9,.]+/g, "");
As Felix Kling pointed out, its important to use the global option g
to match on all occurrences of the pattern.
See it here on Regexr
Upvotes: 13
Reputation: 1386
Try This Below code is prevent alpha key
onKeypress="return Custom(event,'[0-9]');"
function Custom(e, cPattern) {
var key = [e.keyCode || e.which];
var pattern = new String(cPattern);
var keychar = String.fromCharCode([e.keyCode || e.which]);
var pattern1 = new RegExp(pattern);
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27)) {
return true;
}
else if (pattern1.test(keychar)) {
return true;
}
else {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
}
Upvotes: 0
Reputation: 336128
string.replace(/[^\d,.]+/g, "");
should do.
[^\d.,]
means "any character except digit, comma or period", a negated character class.+
instead of *
or you'll have lots of empty matches replaced with empty strings./g
so all instances are replaced.Upvotes: 7
Reputation: 11623
Try to replace all chars except digits and .
,
and do the replace globally:
string.replace(/[^0-9\,\.]+/g, "");
Upvotes: 1