Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Regex替换包含代码的字符串_Javascript_Regex_String - Fatal编程技术网

Javascript Regex替换包含代码的字符串

Javascript Regex替换包含代码的字符串,javascript,regex,string,Javascript,Regex,String,这根绳子 "START";var settings ={"dev":false,"production":"n","id":"bcdef","key":"1234xyz","secret":"22sdfas"} ; return { getSettings: function(setting) { if (settings[setting]) { return settings[setting]; } return null; } };"END" 如何用正则表达式替换它,使其成为 "START

这根绳子

"START";var settings ={"dev":false,"production":"n","id":"bcdef","key":"1234xyz","secret":"22sdfas"}
; return { getSettings: function(setting) { if (settings[setting]) { return settings[setting]; } return null; } };"END"
如何用正则表达式替换它,使其成为

"START";var __REPLACED = console.log('replaced');"END"

我编写此函数的目的是:

/**
 * This function assumes string as a argument and
 * replaces everything  between "START" and "END"
 * with "START";var __REPLACED = console.log('replaced');"END"
 * @param input string
 * @author Georgi Naumov
 * gonaumov@gmail.com for contacts and
 * suggestions.
 */
function replaceString(input) {
    var re = /^("START")(?:(?:(?!"END")[\s\S])+)("END")$/g;
    return input.replace(re, function (match, p1, p2) {
        return p1 + ";var __REPLACED = console.log('replaced');" + p2;
    });
}
这里可以看到检查功能的单元测试:


在JavaScript中匹配所有内容(包括换行符)的传统方法是使用
[\s\s]
(?:.|\s)
不是一个可行的选择,因为
\s
都可以匹配空格和制表符,因此效率极低。太棒了!正是我需要的!