正则表达式中的转义问题

     正则表达式是javascript学习中非常重要的一部分,它的主要作用是验证表单。

      说到正则表达式,我们首先想到的是它的创建方式,正则表达式创建的方式有两种:字面量形式和RegExp构造函数。

      首先说字面量形式:

      创建方法:var expression= / pattern / flags ;

      pattern(模式)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。

      flags(标志)部分表明正则表达式的行为。其中g表示全局模式,i表示不区分大小写模式,m表示多行模式。

      pattern中所有元字符都需要转义,因为元字符在正则表达式中都有一种或多种特殊的用途元字符包括:( ) [ ] { } \ ^ $ | ? * . + / (”/“书中及参考资料没有提及,个人觉得应该算) 。转义的方式就是在元字符前加反斜杠”\“。

      例如:   

1 /*匹配字符串中所有“Web”实例*/
2 var pattern1=/Web/g;
3 /*匹配字符串中所有“Web+”实例*/
4 var pattern2=/Web\+/g;

     然后说说RegExp构造函数:

      创建方法:var expression=new RegExp("pattern","flags");

      构造函数接受两个参数:要匹配的字符串模式、可选的标志字符串。两个参数的数据类型都是字符串,所以不能把字面量形式中的pattern传递给构造函数。RegExp的pattern中所有元字符都必须双重转义,那些已转义过的字符也如此。

      例如:

 1 /*匹配字符串中所有“\”实例
 2 * 考虑方式1
 3 * 1、把“\”这个内容转化成字符串,因为单独的“\”在字符串中代表转义符,把它打印出来不会有任何东西,所以得到的字符串为“\\”。
 4 * 2、把得到的字符串变为正则表达式字符串,正则表达式中的首个“\”表示转义,所以最终得到的字符串为“\\\\”。
 5 * */
 6 
 7 /*匹配字符串中所有“\”实例
 8  * 考虑方式2
 9  * 1、把“\”这个内容转化成字面量模式的正则表达式,得到的结果为“\\”。
10  * 2、把1中的正则表达式转化成字符串,结果为“\\\\”。
11  * */
12 
13 //以下两行代码在控制台执行。
14 var pattern3=new RegExp("\\\\","g");
15 alert(pattern3.test("\\"));

 

posted @ 2015-06-23 14:12  孙灿  阅读(3793)  评论(2编辑  收藏  举报