0

JavaScript を使用して文字列を URL の適切なパーマリンクに変換しますが、2 倍以上のスペースを使用すると小さな問題が発生します。さらに、この文字列の最後で使用すると、次のように置き換えられます。 - へ、このように

this---is---a-test-right-now----

これを取得した場合に戻したい文字列は次のとおりです

this-is-a-test-right-now

ソンバルディはここで私を助けることができますか?

私自身のJavascriptはこのように見えます

function prototype( str )
{
    var ret = str;
    ret = ret.replace( /ø/g, 'oe' );
    ret = ret.replace( /Ø/g, 'OE' );
    ret = ret.replace( /å/g, 'aa' );
    ret = ret.replace( /Å/g, 'AA' );
    ret = ret.replace( /æ/g, 'ae' );
    ret = ret.replace( /Æ/g, 'AE' );
    ret = ret.replace( /\_/g, '-' );

    ret = ret.replace(/[^a-zA-Z0-9\/-]/ig,'-').replace(/_+/ig,'-').toLowerCase();

    return ret;
}
4

2 に答える 2

1

最も簡単な方法は、すべてのオカレンスをダッシュ​​で置き換えるのではなく、連続するオカレンスを1つのダッシュで置き換えることです。

ret = ret.replace(/[^a-z0-9_\/]+/ig,'-').replace(/-+$/,'').toLowerCase();

2番目の正規表現は、末尾のダッシュを取り除きます。

また、修飾子によって正規表現で大文字と小文字が区別されA-Zないため、これは不要であることに注意してください。とにかく文字列を小文字に変換しているのでi、前の行をたとえばに短縮することもできます。ret = ret.replace( /[æÆ]/g, 'ae' )

于 2012-07-16T09:42:27.793 に答える
1

-チェーンにもう1つ置換を追加すると、2回以上の出現を探して1つ置換することで、仕事が完了します-

replace(/[-]{2,}/g, '-')

-上記の例は、2 回以上の出現を探し、それを single-に置き換えて、それgloballyを達成するために実行します。

function prototype( str )
{
    var ret = str;
    ret = ret.replace( /ø/g, 'oe' );
    ret = ret.replace( /Ø/g, 'OE' );
    ret = ret.replace( /å/g, 'aa' );
    ret = ret.replace( /Å/g, 'AA' );
    ret = ret.replace( /æ/g, 'ae' );
    ret = ret.replace( /Æ/g, 'AE' );
    ret = ret.replace( /\_/g, '-' );

    ret = ret.replace(/[^a-zA-Z0-9\/-]/ig,'-').replace(/_+/ig,'-').replace(/[-]{2,}/g, '-').toLowerCase();

    return ret;
}
于 2012-07-16T09:34:32.463 に答える