当前位置: 编程技术>其它
javascript高级程序设计(第三版)学习笔记(一) 正则表达式整理
来源: 互联网 发布时间:2014-10-17
本文导语: 1、创建正则表达式 第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下 var pattern1 = /[abc]/i; // 匹配第一个"a"或"b"或"c",不区分大小写 第二种方式:使用RegExp构造函数创建,该构造函数传入两个参数,都是字...
1、创建正则表达式
第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下
var pattern1 = /[abc]/i; // 匹配第一个"a"或"b"或"c",不区分大小写
第二种方式:使用RegExp构造函数创建,该构造函数传入两个参数,都是字符串,所以需要特别注意""符号的转换,所有元字符(下面有讲元字符)需要双重转义,如下
var patt1 = new RegExp("[abc]","gi"); // 这里等价于 var patt1 = /[abc]/gi;
alert("[abc]".match(patt1)); // return a
var patt2 = new RegExp("\[abc\]","gi"); // 这里等价于 var patt2 = /[abc]/gi; 而在引号内""必须转移为"\"
alert("[abc]".match(patt2)); // return [abc]
说到这里思考两个问题:
a、如果这里的正则表达式,是通过字符串和某个变量动态组合而成的,如何使用第一种方式创建正则表达式?
显然,用第二种创建正则表达式的方式,肯定没有任何问题,因为,传入的第一个参数本身就是一个字符串。要用第一种方式创建,这里需要用到eval()函数,如下
var str = "abc"; // 这可能是一个动态的变量
var patt1 = eval("/\["+str+"\]/"); // 等价于 var patt1 = /[abc]/;
alert("[abc]".match(patt1)); // return [abc]
b、上面两种创建方法有什么不同之处?
《javascript高级程序设计(第三版)》中讲:区别在于是否共享,使用第一种方式创建的正则,共享,第二种不共享。经楼主实践发现结果有点出入,两种创建方式结果一样,都是(true true true),各位可以自行测试。所以这里MARK一下,这两种创建方式没什么区别。
var re = null,i;
for(i=0;i
Javascript里的两种使用正则的方法
JavaScript正则表达式库 XRegExp
JavaScript 的正则表达式编辑器 Scriptular
javascript 正则修正符
javascript下一个还原html代码的正则
javascript判断中文的正则
javascript 小时:分钟的正则表达式
javascript下正则匹配百分比的代码
用Javascript正则实现url链接的解析类
javascript利用正则快速找出两个字符串的不同字符
javascript用正则表达式把1234567890替换为abcdefghij
JavaScript正则表达式之后向引用实例代码
JavaScript 去前后全脚半脚空格的正则
Javascript lastIndex 正则表达式的一个疑惑
javascript 正则 判断是否是数字的脚本
javascript正则表达式容易被忽略的小问题整理
JavaScript正则表达式验证中文实例讲解
javascript中正则表达式反向引用示例介绍
javascript中匹配价格的正则表达式
第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下
var pattern1 = /[abc]/i; // 匹配第一个"a"或"b"或"c",不区分大小写
第二种方式:使用RegExp构造函数创建,该构造函数传入两个参数,都是字符串,所以需要特别注意""符号的转换,所有元字符(下面有讲元字符)需要双重转义,如下
代码如下:
var patt1 = new RegExp("[abc]","gi"); // 这里等价于 var patt1 = /[abc]/gi;
alert("[abc]".match(patt1)); // return a
var patt2 = new RegExp("\[abc\]","gi"); // 这里等价于 var patt2 = /[abc]/gi; 而在引号内""必须转移为"\"
alert("[abc]".match(patt2)); // return [abc]
说到这里思考两个问题:
a、如果这里的正则表达式,是通过字符串和某个变量动态组合而成的,如何使用第一种方式创建正则表达式?
显然,用第二种创建正则表达式的方式,肯定没有任何问题,因为,传入的第一个参数本身就是一个字符串。要用第一种方式创建,这里需要用到eval()函数,如下
代码如下:
var str = "abc"; // 这可能是一个动态的变量
var patt1 = eval("/\["+str+"\]/"); // 等价于 var patt1 = /[abc]/;
alert("[abc]".match(patt1)); // return [abc]
b、上面两种创建方法有什么不同之处?
《javascript高级程序设计(第三版)》中讲:区别在于是否共享,使用第一种方式创建的正则,共享,第二种不共享。经楼主实践发现结果有点出入,两种创建方式结果一样,都是(true true true),各位可以自行测试。所以这里MARK一下,这两种创建方式没什么区别。
代码如下:
var re = null,i;
for(i=0;i