正则表达式

七、正则表达式

正则表达式(regular expression)提供了一种字符模式匹配和文本检索与替换的模板,来验证客户端的输入数据的合法性
通过客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。
一个正则表达式是由普通字符(如a~z)以及特殊字符(元字符)组成的模式字符串。它描述的是在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符串与所搜索的字符串进行匹配的操作。

7.1 模式匹配字符串

1.字符类

在这里插入图片描述

2.量词

在这里插入图片描述

3.指定匹配位置

在这里插入图片描述

4.使用选择匹配符

在这里插入图片描述

5.分组

在这里插入图片描述

7.2 正则表达式的创建

正则表达式的格式:
var 变量名=/正则表达式/;

例:var a=/\d{3}/; 匹配三个数字
var s=/[a-z]?/; a-z之间的字母最多出现一次

7.3 正则表达式的判定

1. test()方法

用于对一个指定的字符串执行模式匹配,如果匹配到,返回true,匹配不到,返回false。
格式:变量名.test(判断传递过来的值);

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>正则表达式</title>
    <script>
        var str=/\d/;  //匹配的是一个数字

        //var jieguo=str.test("abc");  //false
        var jieguo=str.test(3);  //true

        alert("匹配出来的结果是:"+jieguo);
        </script>
</head>
<body>
    
</body>
</html>

2. exec()方法

当没有匹配到,返回null,否则返回一个数组。这个数组的第一个元素包含与正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组(用括号括起来的子表达式)
格式:
变量名.exec(“值”);

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>正则表达式</title>
    <script>
        // var s=str.exec("abd");    null
        // alert(s); */

        //从身份证号提取出生年月日 413236 19900223 0867
        var sfz=413236199002230867;

        //声明身份证号的正则表达式
        var haoma=/(\d{6})(\d{8})(\d{4})/
        //做匹配
        var jieguo=haoma.exec(sfz);

        alert(jieguo);
    </script>
</head>
<body>
    
</body>
</html>

在这里插入图片描述
数组中元素的获取 根据下标定位,下标还是从0开始。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>正则表达式</title>
    <script>
        //从身份证号提取出生年月日 413236 19900223 0867
        var sfz=413236199002230867;

        //声明身份证号的正则表达式
        var haoma=/(\d{6})(\d{8})(\d{4})/
        //做匹配
        var jieguo=haoma.exec(sfz);

        // alert(jieguo);
        //获取数组中的第三个元素
        alert(jieguo[2]);
    </script>
</head>
<body>
    
</body>
</html>

数组的最后一个元素数字对不上(0867弹出了0850)……可能和数据类型容纳的长度有关。放在表单里试试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="03_for语句.html" method="GET" name="form01">
        用户名: <input type="text" name="t" maxlength="20" size="30"><br><br>
        <input type="button" value="检测" onclick="show()">
    </form>
    <script>
        function show(){
        //从身份证号提取出生年月日 413236 19900223 0867
        var sfz=form01.t.value;

        //声明身份证号的正则表达式
        var haoma=/(\d{6})(\d{8})(\d{4})/
        //做匹配
        var jieguo=haoma.exec(sfz);

        // alert(jieguo);
        //获取数组中的第三个元素
        alert(jieguo[3]);
    }
    </script>
</body>
</html>

在这里插入图片描述
就没问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值