2017-08-28 118 views
0

我有一個字符串,我想更新該字符串中兩個註釋之間的值。使用JS RegEx替換兩個字符串之間的文本

我不知道我該怎麼做,使用正則表達式

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

我知道我應該用什麼.replace()RegEx,但我不知道,以創建表達。

回答

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

感謝這個作品在測試中的表現!只是有一個錯誤,當我將此添加到JS'意外的令牌非法' 'var string =「/ *動畫開始* /新字符串應該在這裏添加/ * ANIMATION END * /」; var regex = \/\ * [\ w \ s] + \ * \ /([\ w \ s] +)\/\ * [\ w \ s] + \ * \ /; string = string.replace(正則表達式,「一些很酷的代碼!!!」);' –

+0

@DenisLapiLapadatovic那麼你有這個異常,因爲正則表達式不正確,你需要使用'RegExp'構造函數創建它或包裝它在兩個'/'之間,FYI:在替換調用中使用正則表達式將替換整個正則表達式。 –

+1

這個作品真棒!非常感謝你! –

-1

分爲3個部分:

「(\ [\ S \ S] | [^」])*」用於匹配雙引號字符串

「(\ [\ S \ S] |匹配單引號字符串[^ '])*'

(// |。?。/ * [\ S \ S] * /)用於匹配單和多行註釋

的替換函數檢查匹配的字符串是否是註釋,如果不是,則不要替換,如果是,則替換「和」。

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; 
    }); 
} 
相關問題