Javascript中的Regexp:将减号替换为逗号+;满足条件时为负

Javascript中的Regexp:将减号替换为逗号+;满足条件时为负,javascript,regex,Javascript,Regex,我需要将\-减号替换为\,+-逗号+减号,当减号前面有空格/没有空格/逗号时。在SVG路径中,我发现: `201.86-38.778` 我需要做到这一点 `201.86,-38.778`. `201.86,-38.778`. 我尝试了str.replace(/-/g,“\,-”),但这会在不需要时创建额外的逗号 更新,我也需要这个来像这样工作: `201.86 -38.778` // notice the space 成功 `201.86,-38.778`. `201.86,-38.

我需要将
\-
减号替换为
\,+-
逗号+减号,当减号前面有空格/没有空格/逗号时。在SVG路径中,我发现:

`201.86-38.778` 
我需要做到这一点

`201.86,-38.778`.
`201.86,-38.778`.
我尝试了
str.replace(/-/g,“\,-”)
,但这会在不需要时创建额外的逗号

更新,我也需要这个来像这样工作:

`201.86 -38.778` // notice the space
成功

`201.86,-38.778`.
`201.86,-38.778`.
([-+])
查找并替换为
,\1

您可以使用

/(^|[^,\s])-/g

细分:

  • (^ |[^,\s])
    -匹配并捕获字符串的开头或逗号或空格以外的字符(将在替换模式中使用
    $1
    反向引用引用)
  • -
    -文字连字符
在替换模式中,使用
$1,-
,对捕获文本的反向引用+逗号和连字符

演示:

var re=/(^ |[^,\s])-/g;
var-str='201.86-38.778';
var result=str.replace(重,$1,');

document.body.innerHTML=结果str.replace(/-/g,“\,-”)
,但这会在不需要时创建额外的逗号。一如既往地棒极了。