替换任何字符的正则表达式(数字/,除外)

时间:2012-02-13 14:02:20

标签: javascript regex

我有一个字符串。我需要解析它,替换任何字符(数字除外(09),,.

如何使用javascript进行操作?

试过:

string.replace(/[a-zA-Z]*/, "");

但似乎它不起作用。此外,我需要任何字符,不仅是a-Z(也是?,/,空格等等,如所说的那样,

4 个答案:

答案 0 :(得分:6)

使用negated character class

[^0-9,.]

并输入任何你不想被替换的角色,它将匹配所有其他角色。

here on Regexr

您可以通过添加量词+来优化它,以便它一次替换这些字符的序列,而不是每个字符都替换。

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

正如费利克斯·克林所指出的那样,使用全局选项g来匹配所有模式都很重要。

here on Regexr

答案 1 :(得分:6)

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

应该这样做。

  1. [^\d.,]表示“除数字,逗号或句号之外的任何字符”,否定character class
  2. 使用+代替*,或者您将使用空字符串替换许多空匹配。
  3. 使用/g以替换所有实例。

答案 2 :(得分:1)

尝试替换除数字和. ,以外的所有字符并全局替换:

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

答案 3 :(得分:0)

试试这个 下面的代码是防止alpha键

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;
    }
}