正则表达式

本文介绍了正则表达式的基本概念,包括元字符、反义字符、限定符、转义字符以及字符分枝和分组。通过实例展示了如何使用正则进行手机号、用户名、邮箱、身份证的验证,并探讨了懒惰匹配和断言的概念。此外,还提供了密码复杂性检查的正则示例和封装函数。
摘要由CSDN通过智能技术生成

常用字符

 

      1.常用的元字符

代码        说明
.匹配 除换行符以外 的任意字符
\w匹配 字母 数字 下划线汉字
\s匹配  任意的空白符
\d匹配 数字
\b匹配 单词的开始或结束
^匹配 字符串的开始(在集合字符里[^a]表示非(不匹配)的意思)
$匹配 字符串的结束
[]        

匹配[ ] 里面任意字符    范围查询

[-]匹配一段连续内容  [3-8] :查询3-8中的字符

2.常用反义字符 

代码说明
\W匹配  任意不是字母、数字、下划线、汉字 的字符
\S匹配 任意不是空白符 的字符
\D匹配 任意非数字 的字符
\B匹配 不是单词开头或结束 的位置
[^x]匹配 除了x以外的任意 字符
[^aeiou]匹配 除了aeiou 这几个字母以外的任意 字符

3.限定字符

代码说明
*重复 0次 更多次
+重复 1次更多次
重复 0次 或 1次
{n}重复 N次
{n,}重复 N次 更多次
{n,m}重复 N次  m次

4.转义字符

代码说明
.\.       取 .
*\*       取 *
\\\       取 \

5.字符分枝

代码说明
|用  |  将不同条件分割开来 (不用满足不同情况的选择)

 6.字符分组

代码说明
()通过使用小括号()来分组

 例如: (\d\w){3}  重复匹配3次(\d\w)

7.懒惰匹配和贪婪匹配

贪婪匹配:通常的行为是匹配尽可能多的字符
懒惰匹配:有时候需要匹配
尽可能少的字符、

  • 常用的懒惰限定符
    代码说明
    *?重复 任意次,但尽可能少重复
    +?重复 1次或更多次,但尽可能少重复
    ??重复 0次或1次,但尽可能少重复
    {n,m}?重复 n-m次,但尽可能少重复
    {n,}重复 n次以上,但尽可能少重复

断言:预判某个位置是某个字符。

var str6  = "1hello-world  2hello-js  3hello-html"

代码说明特点举例说明
char(?=exp)零宽正预测预言某个字符后面出现的字符/hello(?=-html)/g
输出-html的hello字符
char(?!exp)零宽负预测某个字符后面不包含指定正则的字符

/hello(?!-js)/g
输出后面不是-js的hello字符

--> hello

(?<=exp)char零宽度正预测查询字符左边包含指定字符

 /(?<=hello-)\w/g
显示前面包含hello- 的字符 

-->['world', 'js', 'html']

(?<!exp)char零宽度负预测 查询字符左边不否包含指定字符

/(?<!3hello-)\w+/g  

显示显示前面不包含3hello- 的字

--> ['1hello', 'world', '2hello', 'js', '3hello', 'tml']

实际案例

1.手机号校验

规则:(第一位1开头,第二位3-9之间的数字,一共11位)

  <script>
 // /^1[3-9][\d]{9}$/   ---> \d 表示任意一个字符 等同于[0-9]
        var regPhone = /^1[3-9][0-9]{9}$/ 
        var strPhone = "1385641232";
        console.log(regPhone.test(strPhone));
  </script>

2.用户名注册

规则:(第一位以字母开头,第二位开始可以是数字、字母、下划线、-的组合,用户名的长度必须是4-8位)

<script>    
        var userName = "aa-_3b"
        var reg2 = /^[A-z][\w\-]{3,7}$/ 
        console.log(reg2.test(userName)); //以字母开头
    </script>

3.邮箱规则:

规则:

1. 开头是数字、字母、下划线(1到多位) 
=>  邮箱的名字由:“数字、字母、下划线、-,.”   -.不能连续出现也不能作为开始
2. @后面紧跟着:数字、字母(1-多位)
3.  对@后面名字的补充  
        - 多域名 .com.cn
        - 企业邮箱  => xxx@xxx.com

<script>
        /*邮箱账户:
        1.开头是数字字母下划线(1到多位)
        邮箱的名字由“数字、字母、下划线、-,.”几部分组成 ,但是- . 不能连续出现也不能作为开始
        2.@ 后面紧跟着:数字、字母 (1-多位)
        3.  对@ 后面名字的补充
            多域名 .com.cn
            企业邮箱  => xxx@ xxx.com
        */
        /*  ”zjeen-dz.mz@xxx.com.cn“
        1)^\w+ 首位出现 1次或多次 字母和数字;
        因为 - . 不能连续出现 也不能放在首位 所以需要分开写 
        2)  -?\w*       // -?出现0次或1次 \w* 字母和数字出现0次或多次
        2)  \.?\w+      // .? 出现0次或1次 \w* 字母和数字出现1次或者多次 点后面必须出现字母
        3)  @[A-z0-9]+  //@后面跟各种字母或数字 可以出现多次 
        4)  [\.A-z0-9]+    // .com.cn 
        5)  [A-z0-9] // 最后一位必须是字母或小数
        
        */
        var str = "zjeen-dz.mz@xxx.com.cn";  // ---> false 因为 - . 中间是或 所以位false
        var reEmail2 = /^\w+((-?\w*)|(\.?\w+))@[A-z0-9]+[\.A-z0-9]+[A-z0-9]$/
        console.log(reEmail2.test(str));
        var str1 = "zjeen-dzmz@xxx.com.cn"; //true
        console.log(reEmail2.test(str1));
    </script>

4.身份证号码:

规则:
1.一共是18位 
2.最后一位可能是X 

   <script>
        /*
        2.身份证验证
        一共是18位 最后一位可能是x  
        */
        var ID = "32068119980631454X";
        var reID = /\d{18}|\d{17}X/g;  //  老师写法:/\d{17[\dX]}/
        console.log(reID.test(ID));
    </script>

5.获取内容 (运用零度断言)

规则:取出电影的标题,评分,评价人数

 //3.获取内容 用断言  
        var str = '<div class="qy-player-title title-score"><h1 class="player-title play-tit-width"><span id="widget-videotitle">长津湖之水门桥</span></h1> <article class="qy-player-score"><div class="score-top"><span class="score-new">9.6分</span><span class="qy-play-icon arrow979-icon"></span><span class="score-user-num">92.9万人评分</span>'
        var titleReg = /(?<=widget-videotitle">).+(?=<\/span><\/h1> )/g
        console.log(str.match(titleReg));
        var  scoreReg = /(?<=score-new">).+(?=分<\/span><span)/g
        console.log(str.match(scoreReg));
        var articleReg = /(?<=score-user-num">).+(?=万人评分<\/span>)/g
        console.log(str.match(articleReg));

6.复杂密码校验

规则:至少包含一个大、小写字母,数字。 数字、字母下划线。4-8位

    <script>  
 // ?=. 0宽正预测,判断后面的字符是否是数字、大小写字母  不占位置
        var passwordReg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{4,8}$/ 
        console.log(passwordReg.test ("Qa132"));
    </script>

封装函数:

      function passwordReg (str){
            var pwdReg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{4,8}$/ ;
            return pwdReg.test(str)
        }
       console.log (passwordReg("Qa132"));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值