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