day14-正则

概念

正则:由一些符号和一些特殊符号组成的一种模式
作用:检测字符串是否符合规则的一种模式
定义正则模式:

  • var reg = / 正则规则 /
  • var reg = new RegExp(正则规则)

正则提供了一个方法来判断字符串是否符合正则的规则
test()正则的规则,必须要正则来调用
返回值:布尔值,如果字符串符合正则的规则返回true 不符合返回false

var reg = /\d/;
            var str = "dskufh7";

            var res = reg.test(str);
            console.log(res);

正则的元字符

\d : 表示数字
\D :表示非数字
\s :表示空格
\S :表示非空格
\w : 表示数字,字母,下划线
\W : 表示非数字,字母,下划线
. 表示非换行以外的任意字符

正则的限定符:主要限定字符出现的次数

   * : 表示符号前面的字符可以出现0-正无穷
   + : 表示符号前面的字符可以出现1-正无穷,至少出现1次
   ? : 表示符号前面的字符可以出现0-1次 至多出现一次
  {n}:表示符号前面的字符出现连续的n次
  {n, }:表示符号前面的字符至少出现n次
  {n,m}:表示符号前面的字符串出现n-m次

正则的边界符

^:表示以什么开头
$:表示以什么结尾
 //以 s开头,以5个数字结尾
 // var reg = /^s\d{5}$/;

163邮箱验证

数字 字母 下划线组成 @163.com
. 非换行以外的任意字符

        // 有一些字符有特殊函数,如果需要值表示这个字符,用 \ 转义
        //  把一些有特殊函数的字符转义成普通的字符 .  ==>\.
        //  把一些普通的字符转义为有特殊含义的字符 s  ==>\s
        var reg = /^\w{8,16}@163\.com/;

        var str = "3874yduy@163.com";
        console.log(reg.test(str));

正则中的特殊字符

\ :转义
| :或
( ) :表示一个整体
[ ]:满足括号里面的一个值其中一个即可
-: 到,一般写在中括号 0-9 a-z A-Z
[^]:只要不是括号里面的任何字符都可以
正则严格区分大小写

  • 字符是1或者2345
    var reg=/^1|2345$/
  • 字符是以1开头或者2开头 1345||2345
    var reg=/^(1|2)345$/

验证邮箱的案例

 /* 
                @163.com
                @qq.com
                @126.com
                @126.cn
            */
            var reg = /^\w{8,16}@(163|qq|126)\.(com|cn)$/;
            var str = "321274hsh@qq.cn";
            console.log(reg.test(str));

验证0-255之间的数

 // var reg = /^[0-255]$/;
            /* 
                一位数字:0-9    \d{1}   
                两位数字:10-99  \d{2}
                三位数字:100-255
                    1开头: 100-199  1\d{2}
                    2开头:
                        200-249      2[0-4]\d{1}
                        250-255      25[0-5]
            */

            
            var reg = /^(\d{1}|\d{2}|1\d{2}|2[0-4]\d{1}|25[0-5])$/;
            var str = 10;

            console.log(reg.test(str));

正则中的方法

标识符:
g:全局
i:忽略大小写
//exec()捕获字符串中满足正则关系的字符,只捕获一次
//返回值:返回一个数组,数组中值为满足条件的字符
//当第二次调用exec()的时候 会从第一次捕获的索引开始往后捕获
//如果没有g的时候 每次调用exec()都会从索引为0开始捕获

字符串可以写正则的方法

必须用字符串调用
【1】replace(/正则/,用什么字符替换)
【2】search()判断字符串是否存在某个字符,跟indexOf一样,但是search 可以写正则,但是indexOf不可以写正则
【3】match()跟正则的exec()方法一样,去字符串捕获满足正则规则的字符
区别:exec()需要循环多次执行才能获取所有满足条件的字符
match()只要给 g 的时候可以自动捕获多次,把所有满足条件的字符返回

 var str = "egyes11wgMSew11dgwMSwem11sgdMSyesewj";
  var res = str.match(/(11|ms)/gi);
  console.log(res);
  ================================
   var res = reg.exec(str);
            var arr = [];
            while (res) {
                // console.log(res);
                arr.push(res[0]);
                res = reg.exec(str);
            }

            console.log(arr);

验证出生年月日的案例

/* 
            2020-10-10
            2020.20.20
            2020/20/20

            \1: 这个字符跟第一个圆括号中的字符保持一样
            \2:表示跟第二个圆括号中的值保持一样

            月份:1-12
                1位数:1-9 [1-9]
                2两位数的:10-12  1[0-2]

            日期:
                1-31
                1位数:1-9 [1-9]
                两位数:10-31
                1开头的:  [12]\d{1}
                3开头:     3[01]


        */
            var reg = /^\d{4}(\-|\.|\/)([1-9]|1[0-2])\1([1-9]|[12]\d{1}|3[01])$/;

            var str = "2020/12/24";

            console.log(reg.test(str));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值