js正则表达试里使用变量的几种方式
日期:2020-06-03
来源:程序思维浏览:6189次
在做递归目录树的时候显示层级导航标题,用到了正则替换并且需要在正则里面写变量,代码奉上:
var v = "bl";
var re = /^\d+$/gim;
var title="a-1";
title=replace(/title/g,"");
想要把变量title传进来这样是不行的。
解决方案:
一、构造函数
在JS的世界中。除了null,undefined。其余皆是对象。
不过,这里肯定有人说,string、number、boolean怎么会是对象呢。
其实虽然我上面那句话不准确,但确实是最直观的感受。因为string、number、boolean在你用的时候,会默认的被相应的基本包装类型给转换成对象。
然后我们又知道,在JS中,所有的对象都是通过构造函数来生成的。
那么,我们就可以用构造函数来代替字面量定义法,例如:
var s = new String("string"); //String对象,toString()后为"string"
var a = new Array(1,2); //[1,2]
var o = new Object(); //{}
相应的,我们也可以用构造函数来生成正则表达式
var re = new RegExp(title,"g");
那么,给它加变量,就和我们前面写的给字符串加变量一样了。
title=replace(re,"");
至此,最初的问题问题也完全解决了。
二、使用eval
var re = eval("/"+title+"/g");
title=replace(re,"");
这个解决方案,从各方面来说,都属下策。
- 上一篇:js递归层级导航附源码下载
- 下一篇:vue-router路由传参的两种方式
精品好课