0

var string = input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig, '<noparse>'+removeBrackets('$1')+'</noparse>');

この式は、文字列を取得し、[noparse]タグでラップされた部分をエンコードして、テキストエリアに表示されないようにする必要があります。

私はこれを次のようにテストしました:

var string = input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig, '<noparse>test</noparse>');

と:

var string = input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig, '<noparse>'+String('$1')+'</noparse>');

そしてそれらは機能します(望ましい効果はありません)。

function removeBrackets(input){
return input
.replace(/\[/g, '&#91;')
.replace(/\]/g, '&#92;');
}

後方参照を removeBrackets 関数に渡そうとすると、何が間違っていますか?

4

2 に答える 2

1

使用している負の文字セットにエラーがあるため、正規表現が機能しません。これで修正されます:

input.replace(/\[noparse\]([^\[]+)?\[\/noparse\]/ig, '<noparse>test</noparse>');
                              ^

次に、実際の置換を実行する.replace()には、単純な文字列の代わりに関数を の 2 番目の引数として渡す必要があります。

于 2013-06-04T05:46:25.310 に答える