html 中的正则(基础)

2023-11-19

正则表达式: 

(1). 什么是: 正则表达式就是专门规定一个字符串中字符出现的规律的一套规则。

(2). 何时: 2大类场景

a. 验证字符串格式

b. 查找敏感词

如何在js中创建正则表达式,用于查找和匹配: 2种: 

(1). 标准写法: 

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

          创建

 正则表达式类型的对象

              "i" - 忽略大小写

  "g"- 全部

b. 何时: 今后只要正则表达式不是固定的,需要根据其他变量值和数组内容动态生成,只能用new RegExp()

(2). 简写: 

  js地盘   | 正则地盘|   js地盘

a. var 变量=/  正则   /ig ,其实就是new RegExp的简写。

b. 问题: //之中是正则表达式的地盘,只能写正则表达式的语法。不认识js的任何语法!

c. 解决: 

1). 只有写死的正则表达式,才能用//创建。

比如: 手机号, 身份证号, 邮箱...

2). 如果正则表达式不是固定的!需要根据其他的变量或数组动态生成!只能用第一种方式拼接字符串!

示例: 查找字符串中符合要求的敏感词

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <title>Document</title>
 7 </head>
 8 <body>
 9   <script>
10     var str="老师:请用小红 我的 朋友造句。小亮:小红是我的朋友。小然:朋友!小红是我的!";
11     //要求: 找出这句话中所有以小字开头的人的名字:小红或小然或小亮
12     //先创建一个正则表达式,包含要找的所有人名
13     //标准写法: 
14     //                     或   或
15     // var reg=new RegExp("小红|小然|小亮","g");
16                                     //找所有
17     //简写:
18     // var reg=/小红|小然|小亮/g;
19 
20     //用正则查找敏感词
21     // var arr=str.match(reg);
22     
23     //如果正则表达式只用一次,不会重复使用
24     //以上两句可合并为一句
25     var arr=str.match(/小红|小然|小亮/g);
26     console.log(arr);
27   </script>
28 </body>
29 </html>
30 运行结果: 
31 ["小红", "小亮", "小红", "小然", "小红"]
View Code

示例: 动态替换字符串中规定的敏感词:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <title>Document</title>
 7 </head>
 8 <body>
 9   <script>
10     //有一个数组集中保存要查找的所有敏感词,而且,要查找的敏感词列表可能随时代不同不断变化。
11     var arr1=["明月","青天"];
12     console.log(arr1.join("|"));
13 
14     //希望数组里有什么,就将什么替换为**
15     //先定义正则表达式
16     //错误: //之间不认识js语法
17     // var reg=/arr1.join("|")/g;
18     //正确: 
19     var reg=new RegExp(arr1.join("|"),"g");
20     //先有一个字符串:
21     var str="日照香炉生紫烟; 窗前明月光; 一行白鹭上青天";
22     //用正则表达式替换字符串中所有符合要求的敏感词为**
23     var str=str.replace(reg,"**");
24     //输出替换后的新字符串
25     console.log(str);
26   </script>
27 </body>
28 </html>
29 运行结果: 
30 明月|青天
31 日照香炉生紫烟; 窗前**光; 一行白鹭上**
View Code

验证: 

(1). 什么是: 用正则表达式检查一个字符串的格式是否符合要求

(2). 如何: 

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

b. 返回值: 

1). 如果要检查的字符串格式符合正则表达式要求,则返回true

2). 如果要检查的字符串格式不符合正则表达式要求,则返回false

(3). 坑: test管的很松,只要字符串中包含部分内容和正则表达式匹配,就返回true。而不要求必须从头到尾完全匹配!

比如: /\d{6}/.test("abc123456def")  返回  true

           "abcdef123456"   返回  true

(4). 解决: 只要验证格式,都在正则//内,前加^,后加$

(5). 原理: ^表示字符串开头, $表示字符串结尾

^和$一起使用,就有"必须从头到尾完全匹配"的意思

示例: 验证密码格式必须是6位数字

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <title>Document</title>
 7 </head>
 8 <body>
 9   <script>
10     //请用户输入一个密码
11     var pwd=prompt("请输入密码");
12     //定义正则表达式规定密码必须是6位数字
13     //回顾正则: 
14     //1位数字: \d   digit 数字
15     //6位: {6}
16     var reg=/^\d{6}$/;
17     // 用正则表达式 检查用户输入的字符串
18     var result=reg.test(pwd);
19     //如果验证通过
20     if(result==true){
21       //在控制台输出密码格式正确
22       console.log(`密码格式正确`)
23     }else{//否则
24       //在控制台输出密码格式不正确
25       console.error(`密码格式不正确`)
26     }
27   </script>
28 </body>
29 </html>
View Code

既查找每个敏感词的内容,又查找每个敏感词的位置: 

(1). 问题: match最大的问题是只能获得敏感词的内容,无法获得敏感词的位置!

(2). 解决: 只要既想获得敏感词内容,又想获得敏感词位置,都用正则表达式对象的exec()函数

(3). 如何: var 查找结果=正则表达式对象.exec(包含敏感词的字符串);

(4). 强调: 如果想让exec()找所有敏感词,那么正则表达式对象必须加g

(6). 坑: 如果只调用一次exec(),即使正则表达式加了g,也只能返回一个敏感词的内容和位置。无法找到所有敏感词的内容个位置的!

(7). 解决: 只要希望exec()可以查找到所有敏感词的内容和敏感词的位置,必须反复调用exec()——exec()自动去找下一个敏感词,直到找不到,返回null为止。

(8). 固定套路: 

var reg=/正则表达式/g;

do{

var result=reg.exec(str);

console.log(result)

}while(result!=null); //只有本次找到了敏感词(result!=null)时才有必要继续找下一个!

(8). exec()的返回值: 

a. 如果找到了一个敏感词: 

      内容    下标位置

var result=[ 

            0: "小红",  

            index: 5  

        ]

1). 如果想获得结果中的敏感词内容: 

标准: result["0"]    简写: result[0]

 2). 如果想获得结果中敏感词的位置: 

标准: result["index"]   简写: result.index

b. 如果没找到敏感词: null

示例: 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    var str="老师:请用小红 我的 朋友造句。小亮:小红是我的朋友。小然:朋友!小红是我的!";
    //要求: 找出这句话中所有以小字开头的人的名字和下标位置:小红或小然或小亮
    //先定义正则表达式
    var reg=/小红|小亮|小然/g;

    //for   while    do while
    //因为当拿到一个字符串时,我们无法提前预见到是否包含敏感词!所以,应该无论是否包含敏感词都能至少查找一次才行!
    do{
      //       用正则 查找 str中的敏感词
      var result=reg.exec(str);
      // console.log(result);
      //先验证只有本次找到的结果不是null时,才读取结果中的下标位置和敏感词内容
      if(result!==null){
        //标准: 
        // console.log(`在${result["index"]}位置,找到敏感词${result["0"]}`);
        //简写: 
        console.log(`在${result.index}位置,找到敏感词${result[0]}`);
      }
    }while(result!=null); //只有本次找到了敏感词,才有必要继续找下一个!
  </script>
</body>
</html>
运行结果: 
在5位置,找到敏感词小红
在16位置,找到敏感词小亮
在19位置,找到敏感词小红
在27位置,找到敏感词小然
在33位置,找到敏感词小红
View Code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

html 中的正则(基础) 的相关文章

随机推荐

  • TF卡被格式化后怎么恢复?格式化后恢复方法

    TF卡格式化后怎么修复 说起TF卡大家应该都不会陌生 现在很多的电子设备都会使用TF卡作为存储设备 但如果大家在使用TF卡如果有不当操作 也时常会把TF卡格式化后 这时一定要注意TF卡格式化后不要存入新的文件 否则视频和照片被覆盖了就没办法
  • buuctf——SecretFile

    进来就看见有大佬被挂在黑页 F12查看源码看到在下面有个黑化了的标签藏得挺深 Archive room php 然后网页中间有个 不知道的还以为在FBI warning 点进去看看 注意到直接来到了end php 但是在上一页的源码这个se
  • 复制虚拟机之后网关重启问题解决

    在复制完成之后没有可以连接的IP地址 于是百度寻求解决方案 根据找到的方案中 实际解决办法如下 1 输入以下命令 清空该文件内容 echo gt etc udev rules d 70 persistent rules 2 删除该文件 或者
  • 谷歌报错

    由于修改了一些打包配置文件导致页面跳转失败和页面资源加载失败 错误如下 在添加了vue router的情况下 使用了base导致页面加载失败 解决 合作开发中修改了打包配置导致失败 如 非生产环境下改为 即可 ps vue cli版本4 0
  • las点云数据格式

    LIDAR Data LIDAR数据类似于带有激光的RADAR 是光检测和测距的缩写 laspy库提供了python API 用于读取 写入和操作一种流行的用来存储LIDAR数据的 LAS文件 LAS文件是根据几种规格打包的二进制文件 La
  • MATLAB算法实战应用案例精讲-【自然语言处理】语义分割模型-DeepLabV3

    目录 1 DeepLab系列简介 1 1 DeepLabV1 1 1 1创新点 1 1 2 动机 1 1 3 应对策略 1 2 DeepLabV2
  • PowerDesigner显示Comment注释

    PowerDesigner默认显示的列是Name及类型 如下图示 现在需要显示注释列 以便使得ER图更加清晰 但是PowerDesigner勾选Comment显示没有效果 所以通过以下几步来处理 双击表 弹出表属性对话框 切到Columns
  • Java安全知识share

    这里简单的介绍一下自己创建的知识星球 为什么要用知识星球呢 一方面他有APP然后方便使用里面的文章标签等功能 另一方面可能有一点点 哈哈哈 总的来说是方便使用 该知识星球包括Java相关的安全知识和其他相关的安全知识php nodejs C
  • labuladong的算法小抄pdf_真漂亮!这份GitHub上爆火的算法面试笔记,助你圆满大厂梦...

    前言 Github作为程序员们的后花园 一直以来都是程序员最喜欢逛逛 学习的地方 小编也不例外 最近看到一份对标BAT等一线大厂的算法面试笔记 已经标星68 K了 很是惊讶 看了一下 觉得知识点整理得非常的详细 也不愧能获得这么多星 资料已
  • Nginx配置及使用个人总结

    Nginx配置及使用个人总结 文章目录 Nginx配置及使用个人总结 1 前言 2 个人使用简单模板文件 3 常用nginx命令 1 前言 根据使用场景 可能会将前后端分离 一些小的工具式web分离反而麻烦 直接打成一个程序包更好 这时Li
  • jdk1.8笔记(1)-函数式接口

    文章目录 1 函数式接口 1 1 概念 1 2 格式 1 3 FunctionalInterface注解 例子 2 函数式编程 2 1 Lambda的延迟执行 2 2 使用Lambda作为参数和返回值 3 常用的函数式接口 3 1 Supp
  • C++ 嵌套类使用

    C 嵌套类 1 嵌套类的名字只在外围类可见 2 类的私有成员只有类的成员和友元可以访问 因此外围类不可以访问嵌套类的私有成员 嵌套类可以访问外围类的成员 通过对象 指针或者引用 3 一个好的嵌套类设计 嵌套类应该设成私有 嵌套类的成员和方法
  • 【云知识】云计算平台都有那些,涨涨云概念

    2023年 第36周 给自己一个目标 然后坚持总会有收货 不信你试试 云计算平台是指为企业和个人提供云计算服务的基础架构和环境 它提供了一系列的硬件 软件和网络设施 用于支持应用程序的部署 管理和运行 以及数据的存储 处理和传输 目录 一
  • vue中的修饰符作用详细讲解

    一 Vue的修饰符是什么 Vue中的修饰符分为以下五种 表单修饰符 事件修饰符 鼠标按键修饰符 键值修饰符 v bind修饰符 二 修饰符的作用 1 表单修饰符 修饰符 作用 使用 lazy 填完信息 光标离开标签的时候 才会将值赋予给va
  • 基于FFmpeg和Screen Capturer Recorder实现屏幕和声音的录制

    当我们看到一些精彩的视频画面 但无法下载时 可以通过录屏的方式将视频和音频录制下来 这个时候我们需要安装采集视频和音频的工具screen capture recorder 以下是在windows10环境下 基于FFmpeg和Screen C
  • electron-vue 树莓派armv7l打包踩坑记录

    1 unsupported arch arm 报错 Unsupported arch arm failedTask build stackTrace Error Unsupported arch arm 解决办法 在package json
  • c语言 二叉树的链式存储

    先序遍历 根左右 中序遍历 左根右 后序遍历 左右根 include
  • Kotlin和Android:JetBrains和Google落后于一种语言

    Google I O 2017 宣布了几项重要公告 但对我而言 最有趣的一个是Android上的 对Kotlin的一流支持 关于此公告的Kotlin博客文章讨论了这给Kotlin用户带来的好处 如果您担心Kotlin支持的其他平台 用于服务
  • 比较和合并实时脚本和函数

    比较和合并实时脚本和函数 实时脚本 Live Script 和函数 Function 是 MATLAB 中常用的两种代码组织形式 它们在代码编写 调试和重用方面有着不同的特点 本文将比较这两种形式 并探讨如何将实时脚本和函数合并使用 实时脚
  • html 中的正则(基础)

    正则表达式 1 什么是 正则表达式就是专门规定一个字符串中字符出现的规律的一套规则 2 何时 2大类场景 a 验证字符串格式 b 查找敏感词 如何在js中创建正则表达式 用于查找和匹配 2种 1 标准写法 a var 变量 new RegE