2

私はこれを持っています:

11111-22222-333---444---55--5566--6-----7-

私はこのコードを使用しています:

overlaps.replace(/-{2}/g, '-');

ただし、機能しません。探しているのは、の複数のインスタンス-を1つに置き換え-、最後のダッシュがあれば削除する必要があることです。

誰が私が間違っているのか教えてもらえますか?

4

4 に答える 4

4

2 つの正規表現を使用する必要はありません。これはうまくいくはずです。

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

http://jsfiddle.net/wJLTB/3/

于 2012-05-18T13:39:23.813 に答える
1

閉じますが、最終条件を忘れました:

終了ダッシュがある場合は削除する必要があります。

代わりにこれを使用してください:

overlaps.replace(/-+/g, "-").replace(/-+$/, "");
于 2012-05-18T13:31:29.697 に答える
1

以下を使用できます。

overlaps.replace(/-+/g, "-").replace(/-$/, "");

デモ: http://jsfiddle.net/wJLTB/1/

もう 1 つの方法は、コールバック関数を使用することです。

overlaps.replace(/-+/g, function(str, p1, offset) {
    return offset.lastIndexOf("-") == p1 ? "" : "-";
})

デモ: http://jsfiddle.net/wJLTB/2/

于 2012-05-18T13:28:48.433 に答える
0

これは私にはきれいに見えます:

overlaps.replace(/-(?=-|$)/g, '')

expr の読み取り: ダッシュを削除し、その後に別のダッシュを続けるか、入力の最後に置きます。

于 2012-05-18T13:52:37.983 に答える