在Javascript中从字符串中快速提取字母数字字符的方法

5

我知道可以写一个简单的循环来检查字符串中的每个字符,看它是否是字母数字字符。如果是,就将它连接到一个新字符串中。就这样。

但是,有没有更简洁的方法呢?我有一个字符串(确切地说是CSS选择器),我需要从该字符串中提取只包含字母数字字符。


有时候你不能同时做到简短优雅和快速。 - Spencer Wieczorek
查看2008年的此条目:“JavaScript的正则表达式仅允许字母数字”。 - JohnH
@SpencerWieczorek,但在这种情况下,您可以。 - Patrick Roberts
3个回答

17

有许多方法可以实现它,基本的正则表达式替换。

var str = "123^&*^&*^asdasdsad";
var clean = str.replace(/[^0-9A-Z]+/gi,"");
console.log(str);
console.log(clean);


\d 可能比 0-9 更好。 - Patrick Roberts
“i”是我之前尝试中遗漏的! - Sunny

1
"sdfasfasdf1 yx6fg4 { df6gjn0 } yx".match(/([0-9a-zA-Z ])/g).join("")

其中sdfasfasdf1 yx6fg4 { df6gjn0 } yx可以替换为字符串变量。例如:

var input = "hello { font-size: 14px }";
console.log(input.match(/([0-9a-zA-Z ])/g).join(""))

你也可以为此创建一个自定义字符串方法。在项目启动时包含以下内容:
String.prototype.alphanumeric = function () {
    return this.match(/([0-9a-zA-Z ])/g).join("");
}

然后你可以在项目中调用任何东西。
var input = "hello { font-size: 14px }";
console.log(input.alphanumeric());

或者直接。
"sdfasfasdf1 yx6fg4 { df6gjn0 } yx".alphanumeric()

-1
var NewString = (OldString).replace(/([^0-9a-z])/ig, "");

其中OldString是您想要从中删除非字母数字字符的字符串


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接