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

时间:2014-04-29 05:32:04

标签: javascript regex

我想除去字母和连字符以外的所有内容。

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

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

任何帮助表示赞赏?

1 个答案:

答案 0 :(得分:10)

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

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

此外,^$ anchors不应该在那里。

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

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

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

String = String.replace(/[^\w-]+/g,'');

由于\w未涵盖-,因此我们将其单独列出。

引自MDN RegExp documentation

  

\ W

     

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

     

例如,/\w/匹配'a'中的"apple," '5'"$5.28,"中的'3'

}中的"3D."