0

正規表現を記述して、二重ダッシュ(単一ダッシュ)を削除し、文字列の開始または終了がダッシュである場合は、空の文字列に置き換えるにはどうすればよいですか?

var oldString = "abc--xyz--"
var filtered = oldStringt.replace(???????); 

サンプル入力>>>>出力

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

3 に答える 3

6

チェーンの置き換えはどうですか?

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

ここでフィドル

于 2012-11-13T20:43:20.607 に答える
2
oldString.replace(/-+/g,"-").replace(/(^-+)|(-+$)/g,"");
于 2012-11-13T20:42:13.700 に答える
0

動作するはずの単一の正規表現を次に示します。

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

テスト: http://jsfiddle.net/kd9g3/

さて、あなたが具体的に正規表現を要求したことは知っていますが、このような多くの置換は、配列を使用して行うこともできます (そして、より高速な場合もあります):

oldString.split(/-+/).filter(function(e){return !!e}).join('-')
于 2012-11-13T21:06:12.227 に答える