踩坑由来:webpack配置环境变量,定义格式:project_name: '"产品1"',然后有个需求就是给不同的合作伙伴打出不同产品名字的包。我全局搜索代码发现有很多地方都写死了“产品0”,脑子立马让我浮现一个方案:把project_name存到store里面,然后把用到的地方都采用$store.getters.product_name替换掉,再仔细一下这种方法改动量太大所以放弃了。由于我前段时间搞了个webpack条件编译的loader插件,瞬间让我想到了写一个webpack 的loader不就轻松搞懂了。嗯... 巴拉巴拉,开开心心瞬间搞完,把项目运行起来后怎么用到的地方多了一个单引号,正在匹配单引号失效的问题就出现了...
踩坑导火线
使用正则把前后单引号去掉
替换无效代码
String.prototype.trim = function (char) {
let reg = `/(^${char})|(${char}$)/g`;
let result = this.replace(reg, "");
console.log("reg:" + reg);
console.log("result:" + result);
return result;
let content = "'abc'";
content.trim("'");
替换成功代码
String.prototype.trim = function (char) {
let reg = new RegExp(`(^${char})|(${char}$)`,'g');
let result = this.replace(reg, "");
console.log("reg:" + reg);
console.log("result:" + result);
return result;
let content = "'abc'";
content.trim("'");
最后对比:
由于无法断点调进string的replace方法,也就不知道replace里面到底对这两种正则处理有何不同,如果你知道为什么或者怎么调进String的replace,请留言告诉我。谢谢~
尽量采用RegExp类创建对象使用正则,避免直接//来使用正则
以上:如发现有问题,欢迎留言指出,我及时更正
Potter
前端工程师
17.8k
粉丝