正则表达式RegExp

第三阶段笔记

张东

18301092802

 

正课:

1. RegExp对象

2. Function

 

一. RegExp对象

  1. 什么是:专门在js中保存一条正则表达式的对象。
  2. 为什么: js本来不认识正则表达式语法的。需要专门的对象来讲正则表达式语法翻译为js认识的方式。
  3. 何时:今后只要在js中使用正则表达式,都必须用RegExp对象

1.1、创建正则表达是对象

(1). 创建正则表达式对象

常用的创建方式:

  a. 标准:

         1). var 变量=new RegExp("正则表达式", "ig");

新建正则表达式对象

     2). 其中:
    i.  i: ignore忽略,因为正则表达式默认是区分大小写的。如果我们希望在匹配时,忽略大小写,都要加上i。

    ii.  g: global 全部,因为正则表达式很懒,默认只匹配第一个符合要求的敏感词。如果希望查找所有敏感词时,都要加g。

  b. 简写:

         (1). var 变量=/正则表达式/ig;

         (2). 使用正则表达式对象:

  a. 验证字符串格式:只记reg.test()

         1). var 验证结果=正则表达式对象.test(要验证的字符串)

         2). 意为:用正则表达式去验证一个字符串的格式是否符合要求。

   3). 何时:今后网页中所有格式验证都是由test函数实现的。

   4). 坑: test默认情况下只要能够找到字符串中部分内容与正则表达式匹配,就返回true。而不要求必须从头到尾完整匹配!

         5). 解决:要求必须从头到尾完整匹配:

                   今后只要验证字符串格式,都要在正则中同时前加^后加$,表示从头到尾的意思。

         6). 示例:验证手机号格式是否正确:
    1_test.html

<!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>

  <script>

    //1. 请用户输入一个手机号

    var phone=prompt("请输入手机号");

    //2. 定义验证手机号格式的正则表达式

    //    从头           到尾

    var reg=/^1[3-9]\d{9}$/;

    //3. 用正则表达式去验证用户输入的手机号

    var result=reg.test(phone);

    //4. 如果验证通过

    if(result==true){

      //5. 提示手机号格式正确

      console.log("手机号格式正确")

    }else{//6. 否则

      //7. 提示手机号格式不正确

      console.error("手机号格式不正确")

    }

  </script>

</body>

</html>

 

  b. 查找所有敏感词的内容和位置:只记: reg.exec()

         1). var 数组=正则表达式对象.exec(包含敏感词的字符串);

    2).意为:用正则表达式去字符串中查找符合要求的敏感词

         3). 返回值:

         i. 如果找到敏感词,就返回一个数组,其中包含一个敏感词的内容和出现的下标位置.

                   arr=[

0: "本次找到的敏感词", 

index: 这个敏感词的下标位置

]

    ii. 如果没找到敏感词,就返回null。

         4). 固定套路:

    var reg=/正则/g;

    do{
      var arr=reg.exec(包含敏感词的字符串);
      if(arr!=null){
                   获取arr中的敏感词内容和位置
      }

    }while(arr!=null);

         5). 示例:查找一个字符串中所有以小字开头的人名
   2_exec.html

<!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>

  <script>

    var str="老师:请用小红 我的 朋友造句。小亮:小红是我的朋友。小涛:朋友!小红是我的!";

    //想找出所有以小字开头的人名

    //定义正则表达式: 

    //            一位汉字

    var reg=/小[\u4e00-\u9fa5]/g;

    //用正则去字符串str中查找敏感词

    //反复执行以下代码: 

    //for   while    do while

    do{

      var arr=reg.exec(str);

      // console.log(`在位置${arr["index"]}发现敏感词${arr["0"]}`);

      if(arr!=null){

        console.log(`在位置${arr.index}发现敏感词${arr[0]}`);

      }

    }while(arr!=null);

  </script>

</body>

</html>

运行结果:

在位置5发现敏感词小红

在位置16发现敏感词小亮

在位置19发现敏感词小红

在位置27发现敏感词小涛

在位置33发现敏感词小红

posted @ 2021-04-30 09:38  山茶-峰  阅读(180)  评论(0)    收藏  举报