Javascript正则表达式用于清理字符串值

Ctr*_*eat 3 javascript regex

我想用js从字符串中去除无效字符。

我的正则表达式当前如下:

var newString = oldString.replace(/([^a-z0-9 ]+)/gi, '');
Run Code Online (Sandbox Code Playgroud)

即找到az或0-9以外的任何内容以及与大小写无关的空格,并替换为空-但是我也想允许使用下划线(_),连字符(-)和点(.)。

我尝试按以下方式更新我的正则表达式,但未按预期工作-进行更改后,我发现带有方括号()的字符串没有被剥离?

var newString = oldString.replace(/([^a-z0-9 .-_]+)/gi, '');
Run Code Online (Sandbox Code Playgroud)

我是否缺少简单的东西?

vks*_*vks 5

var newString = oldString.replace(/([^a-z0-9 ._-]+)/gi, '');

                                               ^^
Run Code Online (Sandbox Code Playgroud)

保持-在端部,因为它放在之间时形成范围[]。现在它在.和之间形成一个范围_。或者您也可以逃脱它。

 var newString = oldString.replace(/([^a-z0-9 ._\-]+)/gi, '');
Run Code Online (Sandbox Code Playgroud)