繁体   English   中英

替换任何字符的正则表达式(除了 number/, .)

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

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

我怎样才能用 javascript 做到这一点?

尝试过:

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

但似乎它不起作用。 另外,我需要任何字符,不仅是 aZ(还有 ?、/、空格等,如上所述,期望.

使用否定字符类

[^0-9,.]

并输入您不想替换的任何字符,它将匹配所有其他字符。

在 Regexr 上看到它

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

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

正如 Felix Kling 指出的那样,使用全局选项g来匹配所有出现的模式很重要。

在 Regexr 上看到它

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

应该做。

  1. [^\\d.,]表示“除数字、逗号或句点之外的任何字符”,一个否定字符类
  2. 使用+而不是*否则您将有很多空匹配项被空字符串替换。
  3. 使用/g以便替换所有实例。

尝试替换除数字和. ,并进行全局替换:

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

试试这个 下面的代码是防止 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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM