欢迎来到天天文库
浏览记录
ID:30768898
大小:100.00 KB
页数:8页
时间:2019-01-03
《javascript类型系统_正则表达式regexp类型详解_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、javascript类型系统_正则表达式RegExp类型详解前面的话前面已经介绍过javascript中止则表达式的基础语法。javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换。本文将介绍正则表达式的RegExp对象,以及正则表达式涉及到的属性和方法对象javascript屮的正则表达式用RegExp对象表示,有两种写法:一种是字面量写法;另一种是构造函数写法Perl写法正则表达式字面量写法,又叫Perl写法,因为javascript的正则表达式特性借鉴自Perl止则
2、表达式字面量定义为包含在一对斜杠(/)之间的字符,并且可以设置3个标志varexpression二/pattern/flags;正则表达式的匹配模式支持下列3个标志:g:表示全局(globa1)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项〃匹配字符串所有'毗’的实例varp二/at/g;//testO方法返冋一个布尔值表示是否可以找到匹
3、配项console・log(p・testCata,));//trueconsole.log(p.testCaba,));//falseRegExp构造函数和普通的内置对象一样,RegExp止则表达式对象也支持new+RegExp()构造函数的形式RegExp构造函数接收两个参数:要匹配的字符串模式(pattern)和可选的标志字符串(flags),标志字符串和字面量的三个标志含义相同:,g,m,RegExp构造函数的两个参数都是字符吊。且使用字面量形式定义的任何表达式都可使用构造函数〃匹配字符串所有'泣’的实例varpl=/at/g;//同上varp2=ne
4、wRegExp('at','g');[注意]ECMAScript3规范规定,一个正则表达式直接量会在执行到它吋转换为一个RegExp对象,同一段代码所表示正则表达式直接量的每次运算都返回同一个对象。ECMAScript5规范则做了相反的规定,同-•段代码所表示的正则表达式直接量的每次运算都返回新对象。1E6-8—直是按照ECMAScript5规范的方式实现的,所以并没有兼容性问题由于正则表达式字面量并不支持变量,所以如果正则表达式中出现变量只能使用RegExp构造函数以字符串拼接的形式,将变量拼接到RegExp构造函数的参数中【tips]通过类名elassna
5、me获取元素functiongetByClass(obj,classname){varelements二obj.getElementsByTagMame('*');varresult二[];varpattern二newRegExp('「
6、\s)'+classnanic+'(\s
7、$)');for(vari=0;i8、个屈性global:布尔值,表示是否设置了g标志ignoreCase:布尔值,表示是否设置了i标志lastindex:整数,表示开始搜索下一个匹配项的字符位置,从0算起mult订inc:布尔值,表示是否设置了标志msource:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返冋varpattern二newRegExp('\[bc\]at,Ji‘);console,log(pattcrn.global);//falseconsole,log(pattern.ignoreCase);//trueconsole,log(pattern,mu9、ltiline);//falseconsole.log(pattern.lastTndex);//0console,log(pattern.source);//'[bc]at,如果使用RegExp的exec()或test()函数,并且设定了全局模式'g',正则表达式的匹配就会从lastindex的位置开始,并月•在每欠匹配成功Z后重新设定lastlndexo这样,就可以在字符串中重复迭代,依次寻找各个匹配结果。但是,如果需要对不同字符串调用同一个RegExp的exec()或test()方法,这个变量也也可能会带來意料之外的匹配结果,所以在更换字符串时,要显10、式地将RegExp的lastlndcx
8、个屈性global:布尔值,表示是否设置了g标志ignoreCase:布尔值,表示是否设置了i标志lastindex:整数,表示开始搜索下一个匹配项的字符位置,从0算起mult订inc:布尔值,表示是否设置了标志msource:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返冋varpattern二newRegExp('\[bc\]at,Ji‘);console,log(pattcrn.global);//falseconsole,log(pattern.ignoreCase);//trueconsole,log(pattern,mu
9、ltiline);//falseconsole.log(pattern.lastTndex);//0console,log(pattern.source);//'[bc]at,如果使用RegExp的exec()或test()函数,并且设定了全局模式'g',正则表达式的匹配就会从lastindex的位置开始,并月•在每欠匹配成功Z后重新设定lastlndexo这样,就可以在字符串中重复迭代,依次寻找各个匹配结果。但是,如果需要对不同字符串调用同一个RegExp的exec()或test()方法,这个变量也也可能会带來意料之外的匹配结果,所以在更换字符串时,要显
10、式地将RegExp的lastlndcx
此文档下载收益归作者所有