Javascript 用于替换字符串的正则表达式

Javascript 用于替换字符串的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我如何编写正则表达式来删除双破折号——改为单破折号——以及字符串是否以破折号开头或结尾替换为空字符串 var oldString = "abc--xyz--" var filtered = oldStringt.replace(???????); 样本输入>>>输出 abc--xyz-- >>>>> abc-xyz abc---xyz-123 >>>>> abc-xyz-123 --abc-xyz-12

我如何编写正则表达式来删除双破折号——改为单破折号——以及字符串是否以破折号开头或结尾替换为空字符串

var oldString = "abc--xyz--"
var filtered = oldStringt.replace(???????); 
样本输入>>>输出

abc--xyz--       >>>>>    abc-xyz
abc---xyz-123    >>>>>    abc-xyz-123
--abc-xyz-123    >>>>>    abc-xyz-123 

如何使用链接替换:

str.replace(/[-]+/g, '-').replace(/[-]+$/g, '').replace(/^[-]+/g, '')

.

这里有一个可以工作的regexp:

oldString.replace(/^-+|-+$|(-)+/g, '$1')
测试:

现在,我知道您特别要求使用regexp,但是像这样的许多替换也可以使用数组来完成(有时它们会更快):


向上投票!不过,不需要方括号(至少在我的控制台JS解释器中不需要)。当只需要一个regexp时,为什么要编译并执行3个regexp呢?
oldString.replace(/^-+|-+$|(-)+/g, '$1')
oldString.split(/-+/).filter(function(e){return !!e}).join('-')