正则表达式只匹配字母数字和连字符,在javascript中删除其他所有内容

Raf*_*ost 2 javascript regex

我想剥除除字母数字和连字符之外的所有内容.

到目前为止,我已经得到了这个,但它不起作用:

String = String.replace(/^[a-zA-Z0-9-_]+$/ig,'');
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏?

the*_*eye 10

如果你想删除除了alphanum,hypen和underscore之外的所有东西,那么否定字符类,就像这样

String = String.replace(/[^a-zA-Z0-9-_]+/ig,'');
Run Code Online (Sandbox Code Playgroud)

此外,^$ 主播不应该存在.

除此之外,您已经在字符类本身中覆盖了大写和小写字符,因此i不需要标记.因此,RegEx成为了

String = String.replace(/[^a-zA-Z0-9-_]+/g,'');
Run Code Online (Sandbox Code Playgroud)

有一个特殊的字符类,匹配a-zA-Z0-9_,\w.你可以像这样使用它

String = String.replace(/[^\w-]+/g,'');
Run Code Online (Sandbox Code Playgroud)

由于\w没有涵盖-,我们分别包括在内.

引用MDN RegExp文档,

\ W

匹配基本拉丁字母表中的任何字母数字字符,包括下划线.相当于[A-Za-z0-9_].

例如,/\w/相匹配'a'"apple," '5'"$5.28,"'3'"3D."