2017-08-28 82 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; 
    }); 
} 
相关问题