0

わかりました。リンクを作成するために、大きな多次元JSONオブジェクトがアプリに注がれています。オブジェクトの1つはhtml文字列です。現在、このオブジェクトの出力を変更して、必要なものに置き換えることはできません。これは、このオブジェクトがいくつかの異なるアプリケーションのいくつかの場所で使用されているためです。そのうち、今までは問題なく動作します。

私がする必要があるのは、JSONオブジェクト内のこのhtml文字列の小さな部分を置き換えて、この新しいアプリケーションのニーズに合うように変更することです。

オブジェクト内のHTMLは次のようになります(オブジェクトデータ全体を除いた「応答タブ」の下のfirebugコンソールから直接取得)

<a href='\/ng\/other\/?object_id=6bfb00fb-2b76'>Some Text<\/a>

私がする必要があるのは、その文字列内の「ng」と「other」を完全に別のものに置き換えることです。私が試したところ。

var swapVal1 = data.rows[index1].vals[1].replace(\/ng\/other\/,"/new/placement/");

ただし、SyntaxError:不正な文字の31行目と、置換関数の最初の部分を指していることがわかります。それで、この問題のより良い代替手段として他のものがバックエンドで書き直されることができるまで、当分の間これを適切に処理するために、私は何をする必要があるでしょう。

4

1 に答える 1

4

正規表現が不正です。これを試して:

var swapVal1 = data.rows[index1].vals[1].replace(/\\\/ng\\\/other\\\//, "/new/placement/");

正規表現リテラルは/文字で囲まれています。バックスラッシュ文字\、、は正規表現メタ文字をエスケープするために使用されるため、にエスケープする必要があります\\。この/文字は正規表現リテラルの開始と終了を示すために使用されるため、にエスケープする必要もあります\/。したがって、正規表現を次のように分解できます。

/     -> start of regex
\\    -> the first \
\/    -> the next /
ng    -> the string "ng"
\\    -> the next \
\/    -> the / after that
other -> the string "other"
\\    -> the next \
\/    -> the / after that
/     -> end of the regex
于 2012-08-29T23:26:02.490 に答える