markzzz
markzzz

Reputation: 47945

regex that replace any chars (except number/, .)

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

Answers (4)

stema
stema

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

Sanjay Goswami
Sanjay Goswami

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

Tim Pietzcker
Tim Pietzcker

Reputation: 336128

string.replace(/[^\d,.]+/g, "");

should do.

  1. [^\d.,] means "any character except digit, comma or period", a negated character class.
  2. Use + instead of * or you'll have lots of empty matches replaced with empty strings.
  3. Use /g so all instances are replaced.

Upvotes: 7

Stelian Matei
Stelian Matei

Reputation: 11623

Try to replace all chars except digits and . , and do the replace globally:

string.replace(/[^0-9\,\.]+/g, "");

Upvotes: 1

Related Questions