0

文字列があり、その特定の部分のみを変更したいと考えています。

[summary]=との間のすべてを&独自のカスタム テキストに置き換えたい..

これが文字列の例です

var test = "http://www.facebook.com/sharer.php?s=100&p[url]=http://whatever&p[summary]=aaa&p[title]=blahblahblah&p[images][0]=test.jpg";

and の中には何もないこともあり[summary]=ます&

var test2 = "http://www.facebook.com/sharer.php?s=100&p[url]=http://whatever&p[summary]=&p[title]=blahblahblah&p[images][0]=test.jpg";

私はこのようなことを考えていましたが、このregは機能しません

alert( test.replace("/^\[summary\]\=(.*)&/", "test") ) ;
4

3 に答える 3

3

これはそれを行う必要があります:

var newValue = "new text here";
test.replace(/(\[summary\]=)[^&]*(&)/, "$1" + newValue + "$2");

私がしたことを分解しましょう:

  • test.replace( . . . );- この部分はご理解いただけたと思います。;)

  • /. . ./- 正規表現パターンの境界。. . 引用符で囲まれていないことに注意してください (正規表現パターンは文字列ではありません)。また、文字列全体ではなく文字列の一部のみを照合しようとしているため、パターンを で開始^または終了しなかったことに注意してください。$

  • (\[summary\]=)- これは、探していた集計値と一致するだけでなく、括弧内にあるため、後で置換で使用できるように取得されます。

  • [^&]*- これは、「非&」文字に一致します。置き換えているため、値をキャプチャする必要がないため、括弧内にはありません。

  • (&)- これにより文字が一致&し、置換で使用するためにキャプチャされます。

  • "$1" + newValue + "$2"・この部品は交換価格です。. . $1正規表現パターン ( = "[summary]=" および= "&")によってキャプチャされた 2 つの値$2を、文字列に挿入する新しい値の周りにラップします。

値をキャプチャするのが好きです。これにより、置換する値に一致する文字列を保存する必要がなくなるからです。. . 私の意見では、一致したものを再利用する方が良いでしょう。

于 2013-10-04T20:25:03.167 に答える