正则动态添加变量
来源:互联网 发布:android蓝牙接收数据 编辑:程序博客网 时间:2024/06/05 17:03
一、字面量
其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如:
var s = "string";
var a = [1,2];
var o = {};
如果需要加入变量,那也是十分简单的事情,比如:
var v = "bl";
var s = "string" + v; //"stringbl"
var a = [1,v]; //[1,"bl"]
var o = {first : v}; //{first : "bl"}
但是,如果碰到了用正则字面量,貌似一切就没这么好了。
var v = "bl";
var re = /^\d+$/gim;
这时,假如你想给\d+后面加入v这个变量,你会发现,没法弄。因为无论你怎么写,都会被当作正则的一部分来处理。
二、构造函数
在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("^\\d+$","gim"); //注意,反斜杠需要转义
那么,给它加变量,就和我们前面写的给字符串加变量一样了。
var v = "bl";
var re =new RegExp("^\\d+" + v + "$","gim"); // re为/^\d+bl$/gim
至此,最初的问题问题也完全解决了。
另外,还有一种方法是用过eval动态执行一段字符串的方法,不过我觉得从各方面来说,都属下策。
var re = eval("/^\\d+" + v + "$/gim")
阅读全文
0 0
- 正则动态添加变量
- 正则表达式中添加变量
- 动态创建控件(EDIT)添加关联变量
- 动态链接库、互斥体、静态变量、添加动态链接引用
- runtime为什么可以动态添加变量和方法?
- String.fromat() 动态添加string资源文件中的变量
- Runtime 创建动态一个类 添加成员变量 属性
- Dom动态添加事件,不能使用循环变量的问题
- C#.NET常见问题(FAQ)-如何使用变量动态添加控件
- 动态向页面添加控件和使用正则表达式
- 动态变量
- 静态变量-动态变量
- 动态添加
- jquery 的validate 动态添加验证规则 及 jquery选择器 name带变量
- iOS_Runtime修改变量值,交换方法实现,动态添加类,成员变量和方法
- 动态向页面添加控件和使用正则表达式的代码
- iOS中动态添加属性的方法——关联(e.g. 向Category添加成员变量)
- 【Objective-C Runtime动态加载】---动态创建类Class 动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用objc_
- nowcoder Wannafly挑战赛1 B 【暴力 + 思维】
- java jdbc curd &&学习文档 [翻译]
- Hibernate
- Unity中关于作用力方式ForceMode的功能注解
- Android ANR源码原理分析
- 正则动态添加变量
- 51Nod-1183 编辑距离
- cordova插件
- IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder
- 例子---碰壁反弹
- 集合map 对集合map进行取值 遍历循环
- springmvc上传文件的三种方式
- SQL语言学习
- 两个页面定时相互跳转