私はこれを持っています:
11111-22222-333---444---55--5566--6-----7-
私はこのコードを使用しています:
overlaps.replace(/-{2}/g, '-');
ただし、機能しません。探しているのは、の複数のインスタンス-
を1つに置き換え-
、最後のダッシュがあれば削除する必要があることです。
誰が私が間違っているのか教えてもらえますか?
私はこれを持っています:
11111-22222-333---444---55--5566--6-----7-
私はこのコードを使用しています:
overlaps.replace(/-{2}/g, '-');
ただし、機能しません。探しているのは、の複数のインスタンス-
を1つに置き換え-
、最後のダッシュがあれば削除する必要があることです。
誰が私が間違っているのか教えてもらえますか?
2 つの正規表現を使用する必要はありません。これはうまくいくはずです。
overlaps.replace(/-+$|(-)+/g, '$1')
閉じますが、最終条件を忘れました:
終了ダッシュがある場合は削除する必要があります。
代わりにこれを使用してください:
overlaps.replace(/-+/g, "-").replace(/-+$/, "");
以下を使用できます。
overlaps.replace(/-+/g, "-").replace(/-$/, "");
デモ: http://jsfiddle.net/wJLTB/1/
もう 1 つの方法は、コールバック関数を使用することです。
overlaps.replace(/-+/g, function(str, p1, offset) {
return offset.lastIndexOf("-") == p1 ? "" : "-";
})
これは私にはきれいに見えます:
overlaps.replace(/-(?=-|$)/g, '')
expr の読み取り: ダッシュを削除し、その後に別のダッシュを続けるか、入力の最後に置きます。