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 中的正则(基础) 的相关文章

  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • Gmail 和 Google Chrome 12+ 中的“从剪贴板粘贴图像”功能如何工作?

    我注意到一个来自 Google 的博文 http gmailblog blogspot com 2011 06 pasting images into messages just got html其中提到 如果您使用的是最新版本的 Chro
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 如何使用 jest 通过 Promise.all 设置多次提取测试

    我在测试中使用 jest 我正在使用 React 和 Redux 并且执行以下操作 function getData id notify return dispatch gt dispatch anotherFunction Promise
  • 在 for 循环中访问 itertools 产品的元素

    我有一个列表列表 是附加 itertools 产品的一些其他结果的结果 我想要的是能够使用 for 循环访问列表列表中列表的每个元素 但我无法访问所有元素 我只能访问最后一个列表的元素 结果是一个非常巨大的列表列表 例如 1 2 4 3 6
  • iPhone 点击时使 div 变暗

    当您的 div 附加了点击处理程序时 当点击该 div 时 iPhone 会使该 div 变暗 作为点击指示器 示例 在移动 Safari 上查看http jsbin com awejo3 4 http jsbin com awejo3 4
  • 有没有办法拉伸整个显示图像以适应给定的分辨率?

    我最近一直在使用pygame制作游戏 遇到了一个小问题 基本上 我希望能够将屏幕上的整个图像 我已经传输到它的所有内容 拉伸到用户将窗口大小调整到的分辨率 我在 pygame 和堆栈溢出的文档中搜索了很多 但我似乎找不到答案 这可能吗 我的
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • 使用 Sphinx 时,如何记录没有文档字符串的成员?

    我正在为我发布的包编写文档 我发现您的文档越全面 人们就越容易找到您的包来使用 废话 实际上 我在充满爱心地编写代码的所有功能和细节方面获得了很多乐趣 然而 我对如何为类级变量编写与 Sphinx 兼容的文档感到完全困惑 特别是 我有一些e
  • 如何显示 GroupList 的 FormArray?

    我正在尝试制作一个交互式表单 在每一行上列出一个项目以及一个删除按钮 在我的示例中称为 verwijderen 这些项目是从数据库中检索的 并且每个项目都实例化为名为的自定义对象LaborPeriod 然后这些对象被转化为FormGroup
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • Angular 停止 Enter 键提交

    I am trying to stop the Enter from submitting my button and rather make it point to another function I tried trapping th
  • 在React组件中使用的字符串变量中插入html

    我正在为我的投资组合网站构建一个反应应用程序 目前我已经用 JSX 编写了应用程序 因此我可以添加以下内容 class Project extends React Component render return div h1 this pr
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • 使用 Numpy 进行多维批量图像卷积

    在图像处理和分类网络中 一个常见的任务是输入图像与一些固定滤波器的卷积或互相关 例如 在卷积神经网络 CNN 中 这是一种极其常见的操作 我已将通用版本任务减少为 Given 一批 N 个图像 N H W D 和一组 K 个滤镜 K H W
  • 使用 javascript/jquery 从数据库格式化日期的正确方法

    我正在调用包含日期时间数据类型的数据库 日期看起来像这样 2005 05 23 16 06 00 000 当用户从列表中选择某个项目时 我想在表格中显示它 我调用我的控制器操作并返回所有时间的 Json 并将它们放入表中 问题是日期完全错误
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 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