《JavaScript中的正则表达式处理.ppt》由会员分享,可在线阅读,更多相关《JavaScript中的正则表达式处理.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JavaScript中的正则表达式处中的正则表达式处理理回顾回顾vDOMDOM简介简介vDOMDOM属性和方法属性和方法vDOMDOM操作操作HTMLHTML元素实例元素实例本章目标本章目标v正则表达式简介正则表达式简介v正则表达式语法正则表达式语法定义正则表达式表达式模式通配符使用表达式操作v正则表达式实例正则表达式实例正则表达式简介正则表达式简介v简单的说,正则表达式是一种可以用于文字模式匹配和替换的强有力简单的说,正则表达式是一种可以用于文字模式匹配和替换的强有力的工具。是由一系列普通字符和特殊字符组成的能明确描述文本字符的工具。是由一系列普通字符和特殊字符组成的能明确描述文本字符串的文
2、字匹配模式串的文字匹配模式。v使用正则表达式,就可以:使用正则表达式,就可以:测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。效性验证。替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。以全部将其删除,或者替换为别的文字。根据模式匹配从字符串中提取一个子字符串。可以用来在
3、文本或输入字根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。段中查找特定文字。定义正则表达式1)定义)定义正则表达式有两种形式,一种是普通方式,一种是构造函数方式。有两种形式,一种是普通方式,一种是构造函数方式。2)普通方式:)普通方式:varreg=/表达式表达式/附加参数附加参数表达式:一个字符串,代表了某种规则,其中可以使用某些特殊字符,来代表特殊的表达式:一个字符串,代表了某种规则,其中可以使用某些特殊字符,来代表特殊的规则,后面会详细说明。规则,后面会详细说明。附加参数:用来扩展表达式的含义,目前主要有三个参数:附加参数:用来扩展表达式的含义,目前主要
4、有三个参数:g:代表可以进行全局匹配。:代表可以进行全局匹配。i:代表不区分大小写匹配。:代表不区分大小写匹配。m:代表可以进行多行匹配。:代表可以进行多行匹配。上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。例子:例子:varreg=/a*b/;varreg=/abc+f/g;3)构造函数方式:)构造函数方式:varreg=newRegExp(“表达式表达式”,”附加参数附加参数”);其中其中“表达式表达式”与与“附加参数附加参数”的含义与上面那种定义方式中的含义相同。的含义与上面那种定义方式中的含义相同。例子:例子
5、:varreg=newRegExp(“a*b”);varreg=newRegExp(“abc+f”,”g”);4)普通方式与构造函数方式的区别)普通方式与构造函数方式的区别普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等:变量,例如根据用户的输入来作为表达式参数等等:varreg=newRegExp(document.forms0.exprfiled.value,”g”);表达式模式表达式模式p表达式模式,是指表达式
6、的表达方式与样式,表达式模式,是指表达式的表达方式与样式,即即varreg=/表达式表达式/附加参数附加参数中的中的“表达式表达式”怎样怎样去描述?去描述?p从规范上讲,表达式模式分为简单模式和复合模式从规范上讲,表达式模式分为简单模式和复合模式.简单模式:是指通过普通字符的组合来表达的模式,例如简单模式:是指通过普通字符的组合来表达的模式,例如:varreg=/abc0d/;可见简单模式只能表示具体的匹配。可见简单模式只能表示具体的匹配。复合模式:是指含有通配符来表达的模式,例如:复合模式:是指含有通配符来表达的模式,例如:varreg=/a+b?w/;其中的其中的+、?和和w都属于通配符,
7、代表着特殊的含义。因此复合都属于通配符,代表着特殊的含义。因此复合模式可以表达更为抽象化的逻辑。模式可以表达更为抽象化的逻辑。通配符的含义及其使用通配符的含义及其使用v1:在许多编程语言里面被用作转义符,一般来说:在许多编程语言里面被用作转义符,一般来说符号后面如果跟的是普通字符符号后面如果跟的是普通字符c,那么,那么c就代表特殊的含义,例如就代表特殊的含义,例如n本来代表字符本来代表字符n,但但n就代表换行。就代表换行。符号后面如果跟的是特殊字符符号后面如果跟的是特殊字符c,那么,那么c就代表普通字符就代表普通字符c,例如,例如一般用作转义符,一般用作转义符,但但则调表普通字符则调表普通字符
8、。v2:匹配输入字符串的起始端,如果是多行匹配,即表达式的附加参数中含有:匹配输入字符串的起始端,如果是多行匹配,即表达式的附加参数中含有m,则也在一个换行符后匹配。例子:则也在一个换行符后匹配。例子:/B/匹配匹配“BabBc”中的第一个中的第一个Bv3$:匹配输入字符创的尾端,如果是多行匹配,即表达式的附加参数中含有:匹配输入字符创的尾端,如果是多行匹配,即表达式的附加参数中含有m,则,则也在一个换行符前匹配。与也在一个换行符前匹配。与的用法相反。的用法相反。例子:例子:/t$/匹配匹配“bat”中的中的t,但是不匹配,但是不匹配“hate”中的中的tv4*:匹配前一个字符:匹配前一个字符
9、0次或多次。次或多次。例子:例子:/ab*/匹配匹配“dddabbbbc”中的中的“abbbb”,也匹配,也匹配“ddda”中的中的“a”v5+:匹配前一个字符:匹配前一个字符1次或多次。次或多次。例子:例子:/ab+/匹配匹配“dddabbbbc”中的中的“abbbb”,但不匹配,但不匹配“ddda”v6d:匹配一个数字字符,等同于:匹配一个数字字符,等同于0-9。例子:例子:varregx=/userd/;varrs=regx.test(“user1”);结果:匹配成功,返回结果:匹配成功,返回true表达式操作表达式操作v表达式操作,在这里是指和表达式相关的方法表达式操作,在这里是指和表
10、达式相关的方法p表达式对象(表达式对象(RegExp)方法:)方法:1exec(str),返回,返回str中与表达式相匹配的第一个字符串,而且以数组的形式中与表达式相匹配的第一个字符串,而且以数组的形式表现,当然如果表达式中含有捕捉用的小括号,则返回的数组中也可能含有表现,当然如果表达式中含有捕捉用的小括号,则返回的数组中也可能含有()中的匹配字符串,例如:中的匹配字符串,例如:varregx=/d+/;varrs=regx.exec(“3432ddf53”);返回的返回的rs值为:值为:34322test(str),判断字符串,判断字符串str是否匹配表达式,返回一个布尔值是否匹配表达式,返
11、回一个布尔值。例如:。例如:varregx=/userd+/g;varflag=regx.test(“user12dd”);flag的值为的值为true。表达式操作表达式操作vString对象方法对象方法1match(expr),返回与,返回与expr相匹配的一个字符串数组,如果没有相匹配的一个字符串数组,如果没有加参数加参数g,则返回第一个匹配,加入参数,则返回第一个匹配,加入参数g则返回所有的匹配则返回所有的匹配例子:例子:varregx=/userd/g;varstr=“user13userddduser345”;varrs=str.match(regx);rs的值为:的值为:user1
12、,user32search(expr),返回字符串中与,返回字符串中与expr相匹配的第一个匹配的相匹配的第一个匹配的index值。值。例子:例子:varregx=/userd/g;varstr=“user13userddduser345”;varrs=str.search(regx);rs的值为:的值为:0表达式操作表达式操作vString对象方法对象方法3replace(expr,str),将字符串中匹配,将字符串中匹配expr的部分替换为的部分替换为str。另。另外在外在replace方法中,方法中,str中可以含有一种变量符号中可以含有一种变量符号$,格式为,格式为$n,代表匹配中被记
13、住的第代表匹配中被记住的第n的匹配字符串(注意小括号可以记忆匹配)。的匹配字符串(注意小括号可以记忆匹配)。例子:例子:varregx=/userd/g;varstr=“user13userddduser345”;varrs=str.replace(regx,”00”);rs的值为:的值为:003userddd00454split(expr),将字符串以匹配,将字符串以匹配expr的部分做分割,返回一个数组,的部分做分割,返回一个数组,而且表达式是否附加参数而且表达式是否附加参数g都没有关系,结果是一样的。都没有关系,结果是一样的。例子:例子:varregx=/userd/g;varstr=“
14、user13userddduser345”;varrs=str.split(regx);rs的值为:的值为:3userddd,45实际应用实际应用描述:有一表单,其中有一个描述:有一表单,其中有一个“用户名用户名”input域域要求:汉字,而且不能少于要求:汉字,而且不能少于2个汉字,不能多于个汉字,不能多于4个汉字。个汉字。实现:实现:functioncheckForm(obj)varusername=obj.username.value;varregx=/u4e00-u9fa52,4$/gif(!regx.test(username)alert(“Invalidusername!”);re
15、turnfalse;returntrue;实际应用实际应用描述:给定一个含有描述:给定一个含有html标记的字符串,要求将其中的标记的字符串,要求将其中的html标记去掉。标记去掉。实现:实现:functiontoPlainText(htmlStr)varregx=/*|*/gm;varstr=htmlStr.replace(regx,);returnstr;小结小结Javascript正则表达式,在一般的程序员,在一般的程序员之中,使用者应该不是很多,因为我们处之中,使用者应该不是很多,因为我们处理的页面一般都不是很复杂,而复杂的逻理的页面一般都不是很复杂,而复杂的逻辑一般我们都在后台处理完成了。但是目辑一般我们都在后台处理完成了。但是目前趋势已经出现了扭转,富客户端已经被前趋势已经出现了扭转,富客户端已经被越来越多的人接受,而越来越多的人接受,而Javascript就是其就是其中的关键技术,对于复杂的客户端逻辑而中的关键技术,对于复杂的客户端逻辑而言,言,正则表达式的作用也是很关键的,同的作用也是很关键的,同时它也是时它也是Javascript高手必须要掌握的重高手必须要掌握的重要技术之一要技术之一。总结总结v正则表达式简介正则表达式简介v正则表达式语法正则表达式语法定义正则表达式表达式模式通配符使用表达式操作v正则表达式实例正则表达式实例