0

そのままの HTML は次のようになります。

<body class="home bc-hide-1bc-hide-2">

私のJSは次のようになります:

var c = $("body").attr("class").replace(/(bc-hide-\d)/,/$& /);
$("body").attr("class", c);

目標は、HTML を次のようにすることです (bc-hide-1 と bc-hide-2 の間のスペースに注意してください)。

<body class="home bc-hide-1 bc-hide-2">

上記の JS を使用すると、出力は実際には bc-hide-# の各インスタンスの前に / が付きます (以下を参照)。

<body class="home /bc-hide-1 /bc-hide-2">

私は正規表現をあまり使用する必要はなく、ドキュメントを調べてきましたが、それを停止するために必要なものを見つけていないだけです。どんな助けでも大歓迎です!

ありがとう!

4

2 に答える 2

5

実際の質問に答えるには:

正規表現の出力に/が含まれるのはなぜですか?

置換に2つのスラッシュがあるため、次のようになります/$& /

置換は正規表現ではなく文字列である必要があり、/$& /.toString()(式の文字列表現)は"/$& /"です。

を使用するだけ'$& 'です。


しかし、私はEvanに同意します。HTMLを生成するコードを修正する必要があります。

于 2012-05-25T03:10:46.493 に答える
1
var c = $("body").attr("class").replace(/(bc-hide-\d)/,'$& ');

置換は文字列であり、正規表現ではありません。JSは、渡した正規表現をスラッシュを含む文字列に変換しました。

于 2012-05-25T03:10:51.283 に答える