正则的用法(js中数据类型之一)

正则就是一种规则,用来服务“字符串”的一种规则,有匹配和捕获两种作用

1、匹配:验证当前字符串是否符合我设定的规则

let reg=/^\d$/;//规则是0-9之间的数字,1到多位
console.log(reg.test('123'));//true
console.log(reg.test('123px'));//false


-------------------------------------------------------
let reg=/\d+/;//规则是只要包含0-9之间,1到多位数字就行
console.log(reg.test('123px'));;//true
console.log('zhangtao');//false

2、捕获:把字符串中符合规则的部分捕获到

let reg=/\d+/;//规则是只要包含0-9之间,1到多位数字就行
console.log(reg.exec('123px'));//看一下这个字符串中符合规则的捕获出来,结果是以下数组,没有捕获到匹配的就是null


//["123", index: 0, input: "123px", groups: undefined]
0: "123"——————数组第一项是捕获到的符合规则的内容
groups: undefined
index: 0————捕获到的开始索引
input: "123px"————原始字符串
length: 1

3、正则的组成

   1、元字符(不可省略)

         ①量词元字符

                    ?   0到1次 

                    *     0到多次

                    +     1到多次

                    {n}    出现n次

                    {n,}    至少出现n次

                    {n,m}    出现n-m次

           ②特殊元字符

                     \       转义字符,可以把特殊元字符转成普通的,也可以倒过来

                     .       任意字符(除了换行符以外)

                     ^       以...开头--------两个一起用,必须一模一样才可以匹配,单个用,符合就行

                     $       以...结尾

                     \n      换行符

                     \d      0-9之间任意数字

                     \D      非0-9之间任意数字

                     \w      数字、字母、下划线

                      \t       制表符

                      \b      单词边界

                      \s      空白符

                      x|y     x和y之间任意一个

                      [a-z]    a-z之间任意一个字符

                       [a-zA-Z0-9]     a-z或者A-Z或者0-9之间任意字符

                       [^a-z]       除了a-z之间任意一个字符

                     ()        分组:作用是提高匹配优先级    分组引用   分组捕获

                     (?: )    只匹配不捕获

                     (?=)    正向预查

                     (?!)   负向预查

           ③普通元字符 

                      普通的能代表自身意思的

       2、修饰符(可省略)

             i       ignoreCase     不区分大小写

            m       multiline        多行匹配

            g         global          全局匹配

4、正向预查、负向预查

let reg=/aaa(?=bbb)/;//aaa后边必须是bbb----正向预查
let reg=/aaa(?!bbb)/;//aaa后边不能是bbb----负向预查

5、捕获生日

    let reg=/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(?:\d|x)$/;
    let res=reg.exec('130731199710309876');
    console.log(`您当前的生日是${res[2]}年${res[3]}日${res[4]}日`);
    //您当前的生日是1997年10日30日

 6、匹配身份证号

      reg = /^(?:\d{6})((?:19|20)\d{2})(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{2}(\d)(?:\d|X)$/;
      console.log(reg.test('110189198503160130'));//true

7、检测是否为有效数字


let isNaN=/[+-]?(\d|[1-9]\d+)(\.\d+)?/;
console.log(isNaN.test("2"));//true


let isNaN=/^([+-])?(\d|[1-9]\d+)(\.\d+)?$/;
console.log(isNaN.test("-+2"));//false

8、匹配邮箱

/* 邮箱 */
let reg=/^[a-zA-Z0-9_]{6,}@[a-zA-Z0-9]{2,3}(\.[a-zA-Z]+){0,2}$/;
console.log(reg.test("18732318396@163.com"));//true

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值