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
都可以匹配空格和制表符,因此效率极低。太棒了!正是我需要的!