multiline属性返回正则表达式是否使用多行模式,这个属性不针对某个正则表达式实例,而是针对所有正则表达式,并且这个属性可写.(IE与Opera不支持这个属性) 复制代码 代码如下: alert(RegExp.multiline); //因为IE,Opera不支持这个属性,所以最好还是单独指定 var re = /\w+/m; alert(re.multiline); alert(RegExp["$*"]);//RegExp对象的静态属性不会因为给RegExp某个对象实例指定了m标志而改变 RegExp.multiline = true;//这将打开所有正则表达式实例的多行匹配模式 alert(RegExp.multiline);
使用元字符注意事项:元字符是正则表达式的一部分,当我们要匹配正则表达式本身时,必须对这些元字符转义.下面是正则表达式用到的所有元字符 ( [ { \ ^ $ | ) ? * + . 复制代码 代码如下: var str = "?"; var re = /?/; alert(re.test(str));//出错,因为?是元字符,必须转义 re = /\?/; alert(re.test(str));//true
使用RegExp构造函数与使用正则表达式字面量创建正则表达式注意点 复制代码 代码如下: var str = "\?"; alert(str);//只会输出? var re = /\?/;//将匹配? alert(re.test(str));//true re = new RegExp("\?");//出错,因为这相当于re = /\?/ re = new RegExp("\\?");//正确,将匹配? alert(re.test(str));//true
既然双重转义这么不友好,所以还是用正则表达式字面量的声明方式 如何在正则表达式中使用特殊字符? 复制代码 代码如下: //ASCII方式用十六进制数来表示特殊字符 var re = /^\x43\x4A$/;//将匹配CJ alert(re.test("CJ"));//true //也可使用八进制方式 re = /^\103\112$/;//将匹配CJ alert(re.test("CJ"));//true //还可以使用Unicode编码 re =/^\u0043\u004A$/;//使用 Unicode,必须使用u开头,接着是字符编码的四位16进制表现形式 alert(re.test("CJ"));
另处,还有一些其它的预定义特殊字符,如下表所示: 字符 描述 \n 换行符 \r 回车符 \t 制表符 \f 换页符(Tab) \cX 与X对应的控制字符 \b 退格符(BackSpace) \v 垂直制表符 \0 空字符("") 字符类 ---〉简单类,反向类,范围类,组合类,预定义类 复制代码 代码如下: //简单类 var re = /[abc123]/;//将匹配abc123这6个字符中一个 //负向类 re = /[^abc]/;//将匹配除abc之外的一个字符 //范围类 re = /[a-b]/;//将匹配小写a-b 26个字母 re = /[^0-9]/;//将匹配除0-9 10个字符之处的一个字符 //组合类 re = /[a-b0-9A-Z_]/;//将匹配字母,数字和下划线