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
也是。