Web APIs 6:正则表达式

Web APIs 6:正则表达式

1.定义及使用场景
  • 用于匹配字符串中字符组合的模式,在JS中属于对象
  • 通常用来查找、替换哪些符合正则表达式的文本,不属于JS专属,许多语言都支持正则表达式
  • 使用场景:验证表单、过滤敏感词
2.语法
  • 定义规则------>根据规则去查找
  • 定义规则 :
    • const 变量名 = /表达式/
  • 判断是否有符合规则的字符串,返回true|false
    • 规则.test(检测目标)
  • 检索符合规则的字符串,返回数组(记住上面的test就行)
    • 规则.exec(被检测的字符串)
js 复制代码
<script>
    //要检测的字符串
    const str = '数据分析、数学建模、数据库、高等数学'
    //1.定义正则表达式 检测规则
    const reg = /数学/
    //2.检测方法
    console.log(reg.test(str)) //返回true
  </script>
3.元字符
  • 普通字符:字母、数字等,只能匹配完全相同的字符

  • 特殊字符:具有特殊含义的字符,eg:a-z表示26个英文字母

  • 元字符分类

    • 边界符:提示字符所处的位置

      js 复制代码
      //边界符 ^表示以什么开头 $以什么结尾
          console.log(/^哈/.test('哈哈哈'))  //true
          console.log(/^哈/.test('二哈哈哈哈哈')) //false 
          console.log(/^哈$/.test('哈哈哈')) //false 精确匹配,只有完全相同才为true
    • 量词:表示重复次数

      量词 说明
      * 重复零次或多次
      + 重复一次或多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次
    js 复制代码
    console.log(/^哈*/.test('哈哈哈哈哈'))  //true
    console.log(/^哈*$/.test('哈很哈哈'))  //false
    console.log(/哈+$/.test('很哈哈哈'))  //true
    console.log(/^哈?$/.test('哈哈哈'))  //false
    console.log(/^哈{4}$/.test('哈哈哈'))  //false
    console.log(/^哈{3}$/.test('哈哈哈'))  //true
    • 字符类::\d表示0~9
      • ...匹配字符集合,只要括号里的任意字符出现都返回true
      • \^:取反
      • . 匹配除换行符之外的任何单个字符
      • 预定义类:
    预定类 说明
    \d 匹配0-9的任一数字,0-9
    \D 匹配所有0-9以外的数字
    \w 匹配任意的字母、数字、下划线,相当于A-Za-z0-9_
    \W 除所有数字、字母、下划线以外的字符
    \s 匹配空格(包括换行符、制表符、空格符等),\\t\\r\\n\\v\\f
    \S 匹配非空格的字符
4.修饰符:
  • 约束正则执行的某些细节行为,如是否区分大小写,是否支持多行匹配等

  • 语法:/表达式/修饰符

  • i修饰符:ignore,不区分大小写

  • g修饰符:global,匹配所有满足表达式的结果

js 复制代码
 console.log(/^java$/i.test('JAVA')) //true
  • replace替换:字符串.replace(/正则表达式/,'替换的文本')
js 复制代码
 const str = 'java是一门编程语言,Java很有趣'
 const re = str.replace(/java/ig, '前端') // i是不区分大小写,g是全局替换
 console.log(re)

注:web APIs模块到这里就基本结束啦~后面还会继续更新JS中es6的新语法相关知识,有问题可以在评论区留言哦!

相关推荐
FluxArt4 小时前
GPT Image 2.5 中文提示词教程:Flux Art 可复用模板
前端·gpt·算法
搬砖的小码农_Sky5 小时前
AI Agent:Windows上Node.js安装后 npm -v报错
前端·npm·node.js·人机交互
计算机魔术师5 小时前
半年翻倍!OpenAI再融300亿,估值冲到1.4万亿
前端
研☆香6 小时前
jQuery + Swiper.js 实现动态渲染轮播图
前端·javascript·jquery
哭泣方源炼蛊6 小时前
正则表达式c++内容汇集
数据库·c++·mysql·正则表达式
子兮曰6 小时前
Node.js 50个优势场景盘点:一个人单干,为啥我多数时候只用它
前端·后端
IT_陈寒6 小时前
我花3小时debug,就因为JavaScript这个隐式转换坑
前端·人工智能·后端
excel7 小时前
Nuxt 中 useSeoMeta 与 useHead 的区别
前端
竹林8187 小时前
OmniGame 技术白皮书:从零依赖到 WebRTC P2P,重新定义网页小游戏的工程上限
前端·浏览器
ss2737 小时前
AI全栈实战 | 2.1-02 CSS 布局:垂直居中为什么是经典面试题?所有布局在解决什么矛盾
前端·css