javascript 正则表达式两种定义方式
2012年8月12日
没有评论
javascript中使用正则表达式有两种方式。第一种是构建一个RegExp对象;第二种是使用”//”来定义,也即perl风格。例如:
var str = 'http://www.netingcn.com/'; var reg = new RegExp('http', 'i'); alert(reg.test(str)); 或 alert(/http/.test(str));
上述例子就是使用两种方式判断字符串str中是否包含http,注意第二种方式 // 一定不能使用引号。
第一种方式生成对象是参数为字符串,所以可以动态(字符串拼接)的设定正则表达式的内容,第二种则不行。我们知道,正则表达式中有很多特殊字符,例如.,*,?等等,如果表达式中就是需要匹配这些特殊字符,那么就需要使用转义符 “\”。特别要注意的是第一种处理转义符时候,需要使用两个“\”。例如:
var str = 'http://www.netingcn.com/'; var reg = new RegExp('www\\.', 'i'); //此处使用了两个 \ alert(reg.test(str)); 或 alert(/www\./.test(str));
那为什么要使用 \\ 来转义呢?因为第一种方式“编译”后还是会变为第二种方式。例如alert(new RegExp(‘www\\.’, ‘i’)) 结果是 /www\./i 。