《正则表达式(javascript).ppt》由会员分享,可在线阅读,更多相关《正则表达式(javascript).ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 正则表达式正则表达式正则表达式正则表达式在在JavaScript脚本中,利用正则表达式可以很容易的实现脚本中,利用正则表达式可以很容易的实现文本字符串的检测、替换等功能。文本字符串的检测、替换等功能。正则表达式是字符串,它定义了一个用来搜索匹配字符串正则表达式是字符串,它定义了一个用来搜索匹配字符串的模式。定义模式:的模式。定义模式:/表达式表达式/JavaScript脚本语言中引入正则表达式主要作用:脚本语言中引入正则表达式主要作用:验证字符串格式验证字符串格式查找字符串查找字符串替换文本替换文本正则表达式正则表达式正则表达式的应用场合正则表达式的应用场合:表单验证表单验证:验证表单中某些
2、域是否符合某种规则验证表单中某些域是否符合某种规则处理处理DOM模型模型:正则表达式可以操作正则表达式可以操作DOM对象或者与对象或者与DOM对象交互。如通过正则对象交互。如通过正则表达式定位表达式定位DOM中的一个对象。中的一个对象。纯编编程逻辑纯编编程逻辑在在WEB开发时,常会判断一个字符串有效性,如一个字开发时,常会判断一个字符串有效性,如一个字符串是否是数字、是否为合法的符串是否是数字、是否为合法的E-MAIL地址等地址等。如何使用正则表达式?如何使用正则表达式?从指定字符串中搜索子字符串从指定字符串中搜索子字符串“abc”function test1()var mystr=doucu
3、ment.form1.test.value;var myreg=new RegExp(“abc”);if(myreg.test(mystr);alert(“目标字符串中存在子串目标字符串中存在子串abc”);else alert(“目标字符串中不存在子串目标字符串中不存在子串abc”);创建正则表达式创建正则表达式调用正则表达式调用正则表达式的的test 方法方法使用正则表达式的大致步骤:使用正则表达式的大致步骤:创建正则表达式创建正则表达式调用相关对象的方法,得到匹配结果调用相关对象的方法,得到匹配结果RegExp对象的创建对象的创建在 JavaScript中,正则表达式的构造可以有两种方法
4、:采用采用RegExp对象的显式构造函数构造对象的显式构造函数构造varvar regreg=new=new RegExpRegExp(“(“参数参数”,“flags”),“flags”)varvar regreg=/=/参数参数/flags/flags 采用采用RegExp对象的隐式构造函数构造对象的隐式构造函数构造i忽略大小写标志忽略大小写标志g表示在全文中表示在全文中查查找出找出现现的所有参数的所有参数m多行多行标标志志 flags标志信息项标志信息项示例示例显示创建正则表达式:显示创建正则表达式:var myregx=new RegExp(“abc”);可以加标志信息,如忽略大小写:可
5、以加标志信息,如忽略大小写:var myregx=new RegExp(“abc”,”i”);隐式创建正则表达式:隐式创建正则表达式:var myregx=/abc/;可以加可以加标标志信息,如全文搜索且忽略大小写:志信息,如全文搜索且忽略大小写:var myregx=/abc/ig;两种构造方式效果是一样的,但仍有小差别,隐式构造在脚本执行时进行编两种构造方式效果是一样的,但仍有小差别,隐式构造在脚本执行时进行编译,一般常用到这个正则表达式式时,用隐式构造法;显式构造法遇到正则译,一般常用到这个正则表达式式时,用隐式构造法;显式构造法遇到正则表达式时才进行编译,在这个表达式使用较少下使用显式
6、构造法。表达式时才进行编译,在这个表达式使用较少下使用显式构造法。正则表达式的操作方法正则表达式的操作方法正则表达式有七种标准的操作方法test()方法:方法:对字符串执行一次测试性搜索,匹配成功返回对字符串执行一次测试性搜索,匹配成功返回true;否则返否则返回回false。exec()方法:方法:对指定的字符串执行正则表达式的搜索,返回一个包含结对指定的字符串执行正则表达式的搜索,返回一个包含结果的数组。果的数组。compile()方法:方法:更换更换RegExp对象实例所使用的表达式模式对象实例所使用的表达式模式search()方法:方法:用来搜索字符串中与正则表达式匹配的子字符串的位置
7、。用来搜索字符串中与正则表达式匹配的子字符串的位置。match()方法:方法:用来执行全局查找,并把查找结果放在一个数组里。用来执行全局查找,并把查找结果放在一个数组里。replace()方法:方法:在一个字符串中通过正则表达式查找并替换相应内容。不在一个字符串中通过正则表达式查找并替换相应内容。不改变原来的字符串,只是重新生成了一个新的字符串。改变原来的字符串,只是重新生成了一个新的字符串。split()方法:方法:用来返回按某种分割标志符将一个字符串拆分为若干个子字用来返回按某种分割标志符将一个字符串拆分为若干个子字符串时所产生的子字符串数组。符串时所产生的子字符串数组。如何构造正则表达式
8、如何构造正则表达式要精确构造所需的正则表达式不是容易的事,要运用好要精确构造所需的正则表达式不是容易的事,要运用好正则表达式,则须充分了解正则表达式的构造语法。正则表达式,则须充分了解正则表达式的构造语法。正则表达式的语法主要是对正则表达式各个元字符功能正则表达式的语法主要是对正则表达式各个元字符功能的描述。的描述。正则表达式分为简单模式和复杂模式。正则表达式分为简单模式和复杂模式。简单模式简单模式简单模式包括普通字符、特殊字符、字符类及量词等。简单模式包括普通字符、特殊字符、字符类及量词等。普通字符:字母、数字、汉字、下划线及没有特殊定义的普通字符:字母、数字、汉字、下划线及没有特殊定义的
9、标点符号。标点符号。特殊意义的字符:特殊意义的字符:*+()$.等等这些特殊意义的字符必须加上转义字符,如表示这些特殊意义的字符必须加上转义字符,如表示*必须用必须用*特殊字符:不便表示的字符,如回车、换行、制表等,表特殊字符:不便表示的字符,如回车、换行、制表等,表示时也必须加上转义字符。示时也必须加上转义字符。简单模式简单模式简单模式包括普通字符、特殊字符、字符类及量词等。简单模式包括普通字符、特殊字符、字符类及量词等。字符类:包括简单类、反向类、范围类、组合类及预定义类字符类:包括简单类、反向类、范围类、组合类及预定义类简单类:用方括号简单类:用方括号“”表示单个字符的表示单个字符的“或
10、或”的关系,的关系,匹配方匹配方括号内任意一个字符。括号内任意一个字符。如:如:/abc/可以匹配可以匹配a、b、c中任意一个字符中任意一个字符反向类:反向类:用来匹配不在括号内的任意字符。用来匹配不在括号内的任意字符。如:如:/abc/可匹配除可匹配除a、b、c外的其他任意字符外的其他任意字符范围类:范围类:0-9表示匹配从表示匹配从0-9任意的数字任意的数字简单模式简单模式字符类:包括简单类、反向类、范围类、组合类及预定义类字符类:包括简单类、反向类、范围类、组合类及预定义类组合类:即简单类、反向类和范围类的组合。组合类:即简单类、反向类和范围类的组合。如:如:/a-z0-9./可以匹配可
11、以匹配a-z、0-9和和.中任意一个字符中任意一个字符预定义类:用某些特别的表示来表示某些组合类。预定义类:用某些特别的表示来表示某些组合类。预定义类等价类的组合描述描述nr除除换换行和回行和回车车之外的任何字符之外的任何字符d0-9数字数字D0-9非数字非数字stnx0Bfr空白字符,包括空格、制表符等Stnx0Bfr非空白字符非空白字符wa-zA-Z_0-9单词单词字符字符类类,字母、数字、下划,字母、数字、下划线线Wa-zA-Z_0-9非非单词单词字符字符类类用户名合法性检测用户名合法性检测如何用户名的检测如何用户名的检测,用户名以字母或数字开头用户名以字母或数字开头,加单词字符加单词字
12、符,并以数字结尾的子字符串?并以数字结尾的子字符串?1、RegExp对象对象2、正则表达式表示为、正则表达式表示为/a-z0-9wd$/输入用户名单击输入用户名单击按钮检测按钮检测function test_zifulei(obj)var username=obj.username.value;var regx=/a-z0-9wd$/g /不包含规定字符,用户名无效不包含规定字符,用户名无效 if(!regx.test(username)alert(n用户名检测用户名检测:nn结果结果:用户名不合法用户名不合法!n);obj.username.focus();else alert(n用户名检测
13、用户名检测:nn结果结果:用户名合法用户名合法!n);用户名合法性检测用户名合法性检测正则表达式的表示正则表达式的表示量词量词正则表达式中正则表达式中,量词是用来限制某些匹配字符个数的量词是用来限制某些匹配字符个数的,也称也称限定符。限定符。限定符限定符作用作用说说 明明*出现出现0次或连续多次次或连续多次/a*b/可匹配可匹配b,aab,aaaab+出现至少一次出现至少一次/a+b/可匹配可匹配ab,aaab,aaaab?出现出现0次或者一次次或者一次/acd?/可匹配可匹配a,ac,adn连续出现连续出现n次次/a3/相当于相当于aaan,连续出现至少连续出现至少n次次/a3,/可匹配可匹
14、配aaa,aaaa,n,m连连续续出出现现至至少少n次次,至多至多m次次/ba1,3/可匹配可匹配ba,baa,baaa正则表达式的量词有:正则表达式的量词有:举例举例电话号码格式:四位区号电话号码格式:四位区号-七位号码七位号码正则表达式表示为:正则表达式表示为:/d4-d7/物品价格匹配:以¥开头的物品价格物品价格匹配:以¥开头的物品价格正则表达式表示为:正则表达式表示为:/¥d+.?d*/复杂模式复杂模式边界定位符:边界定位符:进行验证时,使用定位符来限定字符的位置以进行验证时,使用定位符来限定字符的位置以便更快匹配目标子串。便更快匹配目标子串。常见的边界定位符:常见的边界定位符:定位符
15、定位符说说 明明与字符串的地方匹配与字符串的地方匹配$与字符串与字符串结结束的地方匹配束的地方匹配b匹配一个匹配一个单词边单词边界,就是界,就是单词单词和空格之和空格之间间的位置的位置Bb取非,即匹配一个非取非,即匹配一个非单词边单词边界界如如:/aaa/即必须以即必须以aaa开始的字符串开始的字符串 /aaa$/即必须以即必须以aaa结束的字符串结束的字符串 /bjavab/即字符串中即字符串中java的前后须有空格的前后须有空格function isMobil(obj)var str=obj.mobilenum.value;var patrn=/(+86)?13d9$/;var msg=n
16、使用正则表达式验证手机号码使用正则表达式验证手机号码:nn;msg+=手机号码手机号码:+str+n;if(!patrn.exec(str)msg+=验证结果验证结果:手机号码不合法手机号码不合法!n;alert(msg);return false;else msg+=验证结果验证结果:手机号码合法手机号码合法!n;alert(msg);return true;手机号码合法性检测手机号码合法性检测正则表达式正则表达式的表示的表示其中其中$是定位符是定位符function checkmail()var email=document.form3.email.value;alert(email);var reg=/w+(-.w+)*w+(-.w+)*.w+(-.w+)*$/;if(reg.test(email)alert(合法的电子邮件!合法的电子邮件!);return true;elsealert(电子邮件格式不正确电子邮件格式不正确);return false;验证电子邮件地址验证电子邮件地址正则表达式正则表达式的表示的表示电子邮件地址必须含有电子邮件地址必须含有和和.符号,并且符号,并且.符号在符号在符号之后。符号之后。小结小结正则表达式的概念正则表达式的概念正则表达式的构造正则表达式的构造正则表达式有何优势正则表达式有何优势