当前位置: 首页 > news >正文

JavaScript—正则

正则表达式(Regular Expression)是用于匹配字符串中的字符组合的模式。

创建正则表达式

  1. 通过RegExp对象创建

    var Reg = new RegExp(/123/);
    
  2. 利用字面量的方式创建

    var Reg = /123/;
    

检测正则表达式

  1. test()

    regexObj.test(str); //regexObj:正则表达式 str:要检测的字符串
    
  2. match()

    str.match(regexObj);  //匹配返回一个数组,不匹配返回null
    
  3. exec()

    regexObj.exec(str);  //匹配返回一个数组,不匹配返回null 与match返回格式相同
    

正则表达式中的特殊字符

  1. 边界符

    用来提示字符所处的位置

    • ^:表示匹配行首的文本(以谁开始)
    • $:表示匹配行尾的文本(以谁结束)
  2. 字符类

    字符类:[]表示有一系列字符可供选择,只要匹配其中一个即可。

    let reg = /^[a-zA-Z0-9_-]$/; //字符串包含a-zA-Z0-9_-中任何一个字符即可
    
    • [^]表示取反
  3. 量词符

    量词符用来设定某个模式出现的次数

    量词符说明
    *重复零次或多次
    +重复一次或多次
    ?重复零次或一次
    {n}重复n次
    {n,}重复n次或更多次
    {n,m}重复n-m次
    let reg = /^[a-zA-Z0-9_-]{3,10}$/;  字符串包含a-zA-Z0-9_-,并>=3位和<=10位
    
  4. 括号总结

    • {}:量词符,里面表示重复次数
    • []:字符集合,匹配其中的任意字符
    • ():表示优先级
  5. 预定义类

    预定义类说明
    \d匹配0-9之间的任一数字,同等于[0-9]
    \D匹配所有0-9之外的字符,同等于[^0-9]
    \w匹配任意的字母、数字、下划线,同等于[a-zA-Z0-9_]
    \W匹配除所有字母、数字、下划线之外的字符,同等于[^a-zA-Z0-9_]
    \s匹配空格(包括换行符、制表符、空格等),同等于[\t\r\n\v\f]
    \S匹配非空格的字符,相当于[^\t\r\n\v\f]
    let reg = /^\d{3}-\d{8}|\d{4}-\d{7}$/;  // | 代表或
    
  6. 修饰符

    • g:全局匹配

    • i:忽略大小写

    • m:多行匹配

      let reg = /\w/g;
      

正则表达式中的方法

  1. search()

    方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

    str.search(regexObj);  //匹配成功返回下标,不成功返回-1
    
  2. replace()

    方法用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。

    str.replace(regexObj,'**');  //参数一:正则表达式/字符串 参数二:替换字符 匹配成功或字符存在则替换
    

相关文章:

  • 草莓熊python turtle绘图代码
  • 5.3 马氏链-常返和非常返(Durrett)
  • 【已解决】利用 Java 多线程并发编程提高数据处理效率
  • Spring日志引用原理
  • 项目实战 | 基于RK3566开发板实现USB摄像头推流(ffmpeg+nginx)
  • 进程的程序替换
  • 9. SQL中Insert into/Update/Delete的用法
  • 【webGoat】Path traversal
  • 前后端分离的项目——图书管理系统
  • 【C++修炼秘籍】类和对象(一)
  • 【已解决】利用 Java 多线程并发编程处理数据的实践记录
  • Roson的Qt之旅 #125 QNetworkCookie(网络Cookie)
  • SpringMVC入门案例的步骤
  • 【云原生 | 33】Docker快速部署主流编程语言C/C++
  • 集合和数组之间的相互转换
  • ES6指北【2】—— 箭头函数
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • DOM的那些事
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PV统计优化设计
  • Python实现BT种子转化为磁力链接【实战】
  • React组件设计模式(一)
  • Spring核心 Bean的高级装配
  • v-if和v-for连用出现的问题
  • Vue小说阅读器(仿追书神器)
  • 安装python包到指定虚拟环境
  • 从tcpdump抓包看TCP/IP协议
  • 为视图添加丝滑的水波纹
  • 自定义函数
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (C语言)逆序输出字符串
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (原)Matlab的svmtrain和svmclassify
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • /boot 内存空间不够
  • /etc/sudoers (root权限管理)
  • @Transactional类内部访问失效原因详解
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 数据结构 - C++] AVL树原理及实现
  • [acm算法学习] 后缀数组SA
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [c++] 自写 MyString 类
  • [iOS]GCD(一)
  • [Java] 模拟Jdk 以及 CGLib 代理原理
  • [JS] 常用正则表达式集(一)
  • [leetcode]Flatten Binary Tree to Linked List
  • [Linux] Boot分区满了的处理方法 The volume boot has only 0 bytes disk space remaining