2011-01-31 8 views
0

q="AWORD"を含む文字列があり、q="AWORD"q="THEWORD"に置き換えたいとします。しかし、私はAWORDが何であるのかわかりません。文字列と正規表現を組み合わせて、値を知らずにパラメータを置き換えることは可能ですか?これはこれまで私が持っていたものです...Javascript:String replace problem

globalparam.replace('q="/+./"', 'q="AWORD"'); 

答えて

5

あなたの持っているものは文字列であり、正規表現ではありません。私は、これはあなたが欲しいものだと思う:

globalparam.replace(/q=".+?"/, 'q="THEWORD"'); 

私はあなたが文字列と正規表現を「組み合わせる」しなければならない理由アイデアを得たのか分からないが、正規表現には、ワイルドカードの存在する必要はありません。 。正規表現は、ワイルドカードを含むことができるパターンに似ていますが、そうでなければ与えられた文字と一致するようにしようとします。

次のように上に示した式は動作します:

  • q=":文字にq="と一致します。
  • .+?":次の文字に一致する文字(.)に一致します。"。少なくとも1文字(+)が必要であり、一致が貪欲でない(?)、可能な限り少数の文字を一致させることを意味します。それ以外の場合は、.+"を使用した場合は、最後のまでのすべての文字と一致します。

Learn more about regular expressions

2

フェリックスの答えはあなたのソリューションを提供しますが、あなたが実際に文字列を使用して、正規表現を構築したい場合は、それをこのように行うことができます。

var fullstring = 'q="AWORD"'; 
var sampleStrToFind = 'AWORD'; 

    var mat = 'q="'+sampleStrToFind+'"'; 
    var re = new RegExp(mat); 
    var newstr = fullstring.replace(re,'q="THEWORD"'); 

alert(newstr); 

mat =あなたが構築している正規表現、組み合わせた文字列または何を必要です。

re = RegExpコンストラクタ、グローバル化、大文字と小文字の区別などをしたい場合はここで行います。

最後の行はstring.replace(RegExp,replacement);

です。