正则表达式

来源:互联网 发布:dijkstra 堆优化 编辑:程序博客网 时间:2024/06/05 10:50

1.正则表达式基本概念
所谓正则表达式就是用某种模式去匹配一类字符串的一个公式,反应到js中就是一个RegExp对象。
RegExp 对象:表示正则表达式,它是对字符串执行模式匹配的强大工具。
2.快速入门案例
给你一个字符串(或一篇文章),请你找出所有四个数字连在一起的字串?
代码:

<html><head><link rel="stylesheet" type="text/css" href="form.css"><script type="text/javascript">function test1(){    //得到用户的内容    var con=content.value;    //window.alert(con);    var myReg=/(\d){4}/gi;//这是一个正则表达式对象,可以检索四个连续的数字    //var myReg=new RegExp("(\\d){4}","gi");    while(res=myReg.exec(con)){ //res是检索处理的结果,但是一个结果就对应一个数组,该数组的res[0]就是找到的文本        window.alert("找到"+res[0]);    }}</script></head><body><textarea id="content" rows="10" cols="20"></textarea><input type="button" onclick="test1()" value="测试"/></body></html>

小结:
创建一个RegExp对象有两种方法
(1)隐式创建 var reg=/正则表达式/gi [g表示全局匹配,i表示区分大小写]
(2)显示创建 var reg=new RegExp(“正则表达式”,“gi”);
3.String对象和正则表达式相关的方法
(1)test
(2)match
(3)replace
(4)split

//matchfunction test2(){    var con=content.value;    var myreg=/abc/gi;    res=con.match(myreg);    for(var i=0;i<res.length;i++){        window.alert(i+" "+res[0]);    }}
//testfunction test1(){    var con=content.value;    var myreg=/abc/gi;    if(myreg.test(con)){        window.alert("有abc");    }else{        window.alert("没有abc");    }}
//replace函数function test3(){    var con=content.value;    var myReg=/(\d){4}/gi;    //把四个数,换成    var newCon=con.replace(myReg,"这里原来是四个数");    content.value=newCon;   }

4.子表达式和捕获,反向引用的概念
案例:找到第一位与第四位相同,第二位和第三位相同的数

function test5(){    var con=content.value;    //找abba型数字    //var myReg=/(\d)(\d)\2\1/gi;//(\d)第一个字表达式,(\d)第二个子表达式,\2(\1)反向引用第二个(第一个)子表达式的内容    //找aabbccdd型数字    //var myReg2=/(\d)\1(\d)\2(\d)\3(\d)\4/gi;    //找12321-333999111型的数字,要求满足前面是一个五位数,然后一个-号,然后是一个九位数,连续的每三位要相同    var myReg3=/(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi;    while(res=myReg.exec(con)){        window.alert(res[0]);    }}

5.元字符
(1)限定符:用于指定其前面的字符和组合项连续出现多少次

function test6(){    var con=content.value;    //找到三个1的组合    //var myReg=/1{3}/gi;    //找到最少三个1最多四个1的组合    //var myReg=/1{3,4}/gi;    //+表示1出现1次到任意多次    //var myReg=/1+/gi;    //?表示1出现0次到1次    var myReg=/a1?/gi;    while(res=myReg.exec(con)){        window.alert(res[0]);    }}

(2)字符匹配符
\d:表示可以匹配0-9的任意一个数字
\D:表示可以匹配不是0-9中的任意一个数字
\w:匹配任意英文字符、数字和下划线
\W:与\w相反
等等还有很多可以查手册。
(3)定位符:规定要匹配的字符串出现的位置
^:匹配目标字符串的开始位置
$:匹配目标字符串的结束位置
(4)选择匹配符

var myReg=/(han|汉)/gi;

6.综合案例
验证电子邮件格式是否合法:
(1)只能有一个@
(2)@前面是用户名,可以是a-z A-Z 0-9 _-字符
(3)@后面是域名,例如sohu.com并且域名只能是英文字母

//验证输入的字符串是不是一个电子邮件function test7(){    var con=content.value;    var myReg=/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/gi;    if(myReg.test(con)){        window.alert("是邮件");    }else{        window.alert("不是邮件");    }    //while(res=myReg.exec(con)){    //  window.alert(res[0]);    //}}
原创粉丝点击