javascriptreplace所有非字母数字字符,新行和多个空格,返回1个空格

我正在寻找一个整洁的RegEx解决scheme来取代

  • 所有非字母数字字符
  • 所有NewLines
  • 所有多个白色空间的实例

与空间

对于那些在家里玩的人( 下面的工作

text.replace(/[^a-z0-9]/gmi, " ").replace(/\s+/g, " "); 

不过,我的想法是正则expression式可能足够强大,在一个声明中实现这一点

我认为id需要的RegEx组件

  • [^ a-z0-9] – 删除非字母数字字符
  • \ s + – 匹配任何空间集合
  • \ r?\ n | \ r – 匹配所有新行
  • / gmi – 全局,多行,不区分大小写

然而,我似乎无法正确的方式正则expression式( 以下不起作用

 text.replace(/[^a-z0-9]|\s+|\r?\n|\r/gmi, " "); 

UPDATE

testingstring

 234&^%,Me,2 2013 1080p x264 5 1 BluRay S01(*&asd 05 S1E5 1x05 1x5 

结果

 234 Me 2 2013 1080p x264 5 1 BluRay S01 asd 05 S1E5 1x05 1x5 

那么这是可能的,如果是这样,我需要什么魔法?

强尼5打败了我。 我将build议使用\W+而不使用\s如在text.replace(/\W+/g, " ") 。 这也覆盖了空白区域。

请注意, \W 留下下划线 。 [^a-zA-Z0-9]的短等价物将是[\W_]

 text.replace(/[\W_]+/g," "); 

\W是对[A-Za-z0-9_]单词字符(包括下划线)的简写 \w的否定,

示例在regex101.com

由于[^a-z0-9]字符类包含所有不是alnum的,所以它也包含白色字符!

  text.replace(/[^a-z0-9]+/gi, " "); 

那么我想你只需要添加一个量词到每个模式。 另外回车的事情有点有趣:

 text.replace(/[^a-z0-9]+|\s+/gmi, " "); 

编辑 \s东西匹配\r\n也是。