正则表达式

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

//match
function 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]);
    }
}
//test
function 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]);
    //}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值