我正在寻找一个简洁的正则表达式解决方案来替换
有一个空间
对于那些在家玩的人( 以下确实有效 )
text.replace(/[^a-z0-9]/gmi, " ").replace(/\s+/g, " ");
我的想法是 正则表达式 可能足够强大,可以在一个语句中实现这一点。我认为我需要的组件是
[^a-z0-9]
\s+
\r?\n|\r
/gmi
但是,我似乎无法以正确的方式设置正则表达式的样式( 以下不起作用 )
text.replace(/[^a-z0-9]|\s+|\r?\n|\r/gmi, " ");
输入
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
请注意,这会\W 留下下划线。一个简短的等价物[^a-zA-Z0-9]是[\W_]
\W
[^a-zA-Z0-9]
[\W_]
text.replace(/[\W_]+/g," ");
\W是单词字符(包括下划线)简写 \w的否定[A-Za-z0-9_]
\w
[A-Za-z0-9_]
regex101.com 上的示例