2017-08-28 5 views
0

1つの文字列があり、その文字列の2つのコメントの間の値を更新したいとします。JSを使用して2つの文字列間のテキストを置き換えます。RegEx

私は正規表現

var string = "/* ANIMATION START */ new string should be added here /* ANIMATION END */"; 

を使用して、私はRegEx.replace()を使用すべきかを知っているが、私は式を作成するために知っていないことを行うことができますかどうかはわかりません。 。二重引用符で囲まれた文字列に一致するため*」

「(\ [\ S \ S] | | "([^] \ [\ S \ S]")

答えて

1

これは、あなたが使用する必要がありますRegexです:

\/\*[\w\s]+\*\/([\w\s]+)\/\*[\w\s]+\*\/ 

デモ:

これは、あなたがテキストを置換し、取得するために使用する必要がa sample codeです希望出力:

var string = "/* ANIMATION START */ new string should be added here /* ANIMATION END */"; 
 
var regex = /(\/\*[\w\s]+\*\/)([\w\s]+)(\/\*[\w\s]+\*\/)/ig; 
 
string = string.replace(regex, "$1 ###ADDED TEXT### $3"); 
 
console.log(string);

私達はちょうどANIMATION STARTANIMATION END部品のために、それぞれ他の二つのマッチンググループを使用する必要があるので、私たちは、置換文字列でそれらを再利用することができます。

+0

ありがとうございますこのテストでperferect!これをJSに追加するとエラーが1つだけ発生する '予期しないトークンILLEGAL' ' var string = "/ * ANIMATION START * /新しい文字列をここに追加する必要があります/ * ANIMATION END * /"; \ [\ w \ s] + \ * \ /([\ w \ s] +)\/\ * [\ w \ s] + \ * \ /; @DenisLapiLapadatovic正規表現が正しくないため、 'RegExp'コンストラクタを使用して作成する必要があるか、またはそれをラップする必要があるので、この例外が発生しました(文字列= string.replace(regex、" Some cool codee !!! ");' –

+0

@DenisLapiLapadatovic 2つの '/'の間、FYI:置換呼び出しで正規表現を使用すると、正規表現全体が置き換えられます。 –

+1

これは素晴らしいです!どうもありがとうございました! –

-1

は3つの部分があります[^ '])*' 単一引用符で囲まれた文字列をマッチングするための

(// |。。/ * [\ S \ S] * /)一行と複数行コメントの両方を合わせるため

?。 replace関数は、一致した文字列がコメントかどうかをチェックし、一致していない場合は置換しないでください。

function t_replace(data){ 
    var re = /"(\\[\s\S]|[^"])*"|'(\\[\s\S]|[^'])*'|(\/\/.*|\/\*[\s\S]*?\*\/)/g; 
    return data.replace(re, function(all, strDouble, strSingle, comment) { 
     if (comment) { 
      return all.replace(/"/g, '"').replace(/'/g, '''); 
     } 
     return all; 
    }); 
} 
関連する問題