欢迎来到天天文库
浏览记录
ID:30778807
大小:197.84 KB
页数:13页
时间:2019-01-03
《javascript类型系统之正则表达式_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaScript类型系统之正则表达式定义正则又叫规则或模式,是一个强大的字符串匹配工具。javascript通过RegExp类型來支持正则表达式特性[1]贪焚性,匹配最长的[2]懒惰性,不设置/g,则只匹配第1个写法perl写法(使用字面量形式)varcxprcssion二/pattcrn/flags;模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符串、限定类、分组、向前查找以及反向引用。每个止则表达式可以带一个或多个标志(flags),用以标明正则表达式的行为。正则表达式支持三个标志:[1]g:表示全局模式(global)[2]i:表示不区分大小写(ign
2、oreCasc)[3]m:表示多行模式(multiline)〃匹配字符串所有'at'的实例varpatternl二/at/g;RegExp构造函数RegExp构造函数接收两个参数:耍匹配的字符串模式(pattern)和标志字符串(flags)(可选)[注意]RegExp构造函数的两个参数都是字符串。且使用字面量形式定义的任何表达式都叫•使用构造函数//匹配字符串所有'毗’的实例varpattern二newRegExp('at'g');两种写法的区别字面量写法不支持变量,只能用构造函数的形式来写[tips]获取class元素(因为classnamc是变量,只能使用构造函数的形式)func
3、tiongetByClass(obj,classname){varelements二obj.getElementsByTagMame('*');varresult二[];varpattern二newRegExp('(
4、\s)'+classname+'(\s
5、$)');for(vari=0;i6、新RegExp实例都是一个新实例。ES5中规定使用正则字面量必须像直接调用RegExp构造函数一样,每次都创建新的RegExp实例语法[注意]正则表达式中不能出现多余空格元字符(14个)0[]{}八$丨?*+・[注意]元字符必须转义,即用加转义字符,用newRegExp写的止则必须双重传义转义字符・除换行符之外的任意字符d数字D非数字w字母、数字、下划线W非字母、数字、下划线(汉字不属于w)s空格S非空格b边界符(w的左侧或右侧不是叭则会出现一•个边界符)B非边界符1表示和前面相同的一个字符t制表符v垂直制表符uxxxx査找以十六进制xxxx规定的7、Unicode字符(u4c00-u9fa5代表中文)(w)(d)l2:1代表w当时所代表的值,2代表d当时所代表的值[注意]正则表达式屮的子项必须是用小括号括起来的,并且顺序以小括号的前描号出现的顺序为准[tips]找出重复项最多的字符和个数varstr=Jaaaaabbbbbdddddaaaaaaaffffffffffffffffffgggggccccccc,;varpattern=/(w)l+/g;varmaxLength=0;varmaxValue二'';varresult二str.replace(pattcrn,function(match,matchl8、,pos,originalTcxt){if(match,length>maxLength){maxLength二match,length;maxValue二matchl;}})console,log(maxLength,maxValue);//18系统转义alert()和console,log()里面的字符是系统转义字符字行表格车纸杠引引以空换制空回进斜单双nnOntbrf‘〃X\\\\\•I•六进制nn表示一个字符(n为0-f),如x41表示'A'unnnn以十六进制nnnn表示一个Unicode字符(n为0-f),如u03a3表示希腊字符£[注意]alert里而的9、换行不能用〈br>或<br>,而应该用alertChttp://www.baidu.comt你好')双重转义由于RegExp构造函数的参数是字符串,所以某些情况下,需要对字符进行双重转义。所有元字符必须双重转义,已经转义过的字符也必须双重转义字面量模式->/[bc]at//.at//name/age//d.d{l,2}//w\hello\123/等价的字符申〃\[bc\bt〃\.at"ame\/age,/〃
6、新RegExp实例都是一个新实例。ES5中规定使用正则字面量必须像直接调用RegExp构造函数一样,每次都创建新的RegExp实例语法[注意]正则表达式中不能出现多余空格元字符(14个)0[]{}八$丨?*+・[注意]元字符必须转义,即用加转义字符,用newRegExp写的止则必须双重传义转义字符・除换行符之外的任意字符d数字D非数字w字母、数字、下划线W非字母、数字、下划线(汉字不属于w)s空格S非空格b边界符(w的左侧或右侧不是叭则会出现一•个边界符)B非边界符1表示和前面相同的一个字符t制表符v垂直制表符uxxxx査找以十六进制xxxx规定的
7、Unicode字符(u4c00-u9fa5代表中文)(w)(d)l2:1代表w当时所代表的值,2代表d当时所代表的值[注意]正则表达式屮的子项必须是用小括号括起来的,并且顺序以小括号的前描号出现的顺序为准[tips]找出重复项最多的字符和个数varstr=Jaaaaabbbbbdddddaaaaaaaffffffffffffffffffgggggccccccc,;varpattern=/(w)l+/g;varmaxLength=0;varmaxValue二'';varresult二str.replace(pattcrn,function(match,matchl
8、,pos,originalTcxt){if(match,length>maxLength){maxLength二match,length;maxValue二matchl;}})console,log(maxLength,maxValue);//18系统转义alert()和console,log()里面的字符是系统转义字符字行表格车纸杠引引以空换制空回进斜单双nnOntbrf‘〃X\\\\\•I•六进制nn表示一个字符(n为0-f),如x41表示'A'unnnn以十六进制nnnn表示一个Unicode字符(n为0-f),如u03a3表示希腊字符£[注意]alert里而的
9、换行不能用〈br>或<br>,而应该用alertChttp://www.baidu.comt你好')双重转义由于RegExp构造函数的参数是字符串,所以某些情况下,需要对字符进行双重转义。所有元字符必须双重转义,已经转义过的字符也必须双重转义字面量模式->/[bc]at//.at//name/age//d.d{l,2}//w\hello\123/等价的字符申〃\[bc\bt〃\.at"ame\/age,/〃
此文档下载收益归作者所有