Javascript 查找和替换的单个正则表达式

Javascript 查找和替换的单个正则表达式,javascript,regex,Javascript,Regex,使用单个正则表达式可以找到错误的分隔符: Gary Numan- Cars.mp3 // match Gary Numan -Cars.mp3 // match Gary Numan-Cars.mp3 // match 但不是“-”,这是正确的 Gary Numan - Cars.mp3 因此,可以使用简单的替换来更改: Gary Numan- Cars.mp3 ---> Gary Numan - Cars.mp3 Gary Numan - Cars.mp3 --->

使用单个正则表达式可以找到错误的分隔符:

Gary Numan- Cars.mp3 // match
Gary Numan -Cars.mp3 // match
Gary Numan-Cars.mp3  // match
但不是“-”,这是正确的

Gary Numan - Cars.mp3
因此,可以使用简单的替换来更改:

Gary Numan- Cars.mp3   --->  Gary Numan - Cars.mp3
Gary Numan - Cars.mp3  --->  Gary Numan - Cars.mp3
Gary Numan-Cars.mp3    --->  Gary Numan - Cars.mp3
我有下面这些,但它们都匹配。-我可以做两次传球,我相信现在只要一次就可以了

Reginald X.Pression你在哪里

 /(\s{1}-|-\s{1}|-)/gi

您可以使用此正则表达式:

/-\S|\S-/g

此正则表达式使用交替来匹配前面有非空格或后面有非空格的
-


编辑:根据您编辑的部分,您可以使用此
替换

input = input.replace(/\s*-\s*/g, ' - ');

太快了!由于您在任意一侧使用非空白字符-如何将其用作简单替换?没有替换要求,只是匹配要求。我建议,你能用每个例子的替换来更新这个问题吗。