正则表达式语法与应用案例

正则表达式语法

正则表达式(Regular Expression,缩写为Regex或RegExp)的语法主要包括以下几个方面:

  1. 单个字符匹配:可以使用普通字符、元字符、字符集和反义字符来匹配一个单个字符。
  2. 重复匹配:使用量词元字符,如*、+、?、{m}、{m,n}等,来指定重复匹配的次数。
  3. 字符集合并和取反:可以使用方括号[]来表示一个字符集,也可以使用^在方括号内表示取反。
  4. 分组和引用:用小括号()来表示一个分组,可以对分组进行重复匹配、或逻辑和引用等操作。
  5. 选择和或逻辑:使用竖线|来表示或逻辑,可以同时匹配多个子表达式中的一个。
  6. 边界定位:使用元字符^和$来表示字符串的开始和结尾,也可以使用\b和\B来匹配单词的边界和非边界。
  7. 模式修饰符:可以在正则表达式的末尾添加一些修饰符,如i、s、m、x等,来控制匹配的模式。

正则表达式是一种强大的文本处理工具,它可以用来匹配、查找、替换、分割等操作。下面是一些基本的正则表达式操作:

  1. 匹配:使用正则表达式来查找字符串中是否包含特定的模式。可以用match()或test()等函数来实现。

  2. 替换:使用正则表达式来查找并替换字符串中的某些模式,可以使用replace()函数。

  3. 分割:使用正则表达式来分割字符串中的某些模式,可以使用split()函数。

  4. 验证:使用正则表达式来验证字符串是否符合某些模式,如验证邮箱、电话号码、密码等。可以使用test()函数。

下面是一个简单的例子,可以用正则表达式来查找某个字符串中是否包含数字:

var str = "hello123world";
var pattern = /\d+/;
if (pattern.test(str)) {console.log("字符串中包含数字");
} else {console.log("字符串中不包含数字");
}

上述代码中,使用正则表达式/\d+/来查找是否包含数字,使用test()函数来验证。如果返回true,则表示字符串中包含数字。

js正则表达式写法

JS中使用正则表达式的主要方式是通过RegExp对象来创建一个正则表达式,然后可以使用这个正则表达式来匹配、替换、分割等操作。

下面是一些常见的正则表达式语法及其含义:

  1. 字符类:用方括号[]表示,其中列出可选的字符,如[abc]表示可选的字符集合为a、b或c。

  2. 范围类:用方括号[]表示,其中使用横杠-连接两个字符,表示字符的范围,如[a-z]表示a到z的所有小写字母。

  3. 元字符:表示特定的字符或字符集合,如\d表示任意数字,\w表示字母、数字、下划线,\s表示空白字符等。

  4. 量词:表示匹配字符的重复次数,如{m,n}表示匹配至少m次、最多n次,+表示匹配至少一次,*表示匹配0次或多次,?表示匹配0次或1次。

下面是一个简单的例子,可以用正则表达式来匹配一个字符串是否符合邮箱的格式:

var email = "test@example.com";
var pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
if (pattern.test(email)) {console.log("邮箱格式正确");
} else {console.log("邮箱格式不正确");
}

上述代码中,使用正则表达式/^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$/来匹配邮箱格式。其中^表示字符串开始,$表示字符串结束,\w表示字母、数字、下划线,[-+.]\w+表示连接符号+、-或.,以及后面的字母、数字、下划线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142957.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Unity之NetCode多人网络游戏联机对战教程(3)--NetworkObject组件讲解

文章目录 NetworkObjectAlways Replicate As RootSynchronization TransformActive Scene SynchronizationScene Migration SynchronizationSpawn With ObserversDont Destroy With OwnerAuto Object Parent Sync 后话 NetworkObject 为了复制任何Netcode感知属性或发送/接收R…

Python大数据之pandas快速入门(一)

文章目录 pandas快速入门学习目标1. DataFrame 和 Series 简介2. 加载数据集(csv和tsv)2.1 csv和tsv文件格式简介2.2 加载数据集(tsv和csv) pandas快速入门 学习目标 能够知道 DataFrame 和 Series 数据结构能够加载 csv 和 tsv 数据集能够区分 DataFrame 的行列标签和行列位…

FPGA project : uart232_ram_vga

重点学习: 本实验重点学习了双口ram解决多bit跨时钟域同步处理的问题。 其实signal port ram,它的输入口和输出口分别用不同的时钟,也可以解决这个问题。 让我意识到的比较重要的事情: 1,代码设计中,一…

经典题记录 字符串相加/相乘

1. LeetCode 415 字符串相加 代码一:代码简短,但需要借助额外的一个string来保存结果,更占用内存。 class Solution { public:string addStrings(string num1, string num2) {string ans"";int size1num1.size();int size2num2.si…

Qt_C++读写NFC标签Ntag支持windows国产linux操作系统

本示例使用的发卡器&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) ntag2标签存储结构说明 #include "mainwindow.h" #include "./ui_mainwindow.h" #include <QDebug> #include "QLibrary&…

Django REST Farmowork初探

1.简介 Django REST framework &#xff08;简称&#xff1a;DRF&#xff09;是一个强大而灵活的 Web API 工具。 遵循RESTFullAPI风格&#xff0c;功能完善&#xff0c;可快速开发API平台。 官网文档&#xff1a;https://www.django-rest-framework.org 2. framwork的安装 …

界面组件DevExpress WPF v23.2新功能预览 - 更轻量级的主题

本文主要描述了DevExpress WPF即将在几个月之后发布的v23.2中包含的新功能&#xff0c;持续关注我们获取更多最新资讯哦~ P.S&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强…

2023蓝帽杯半决赛取证复现

1.检材数据开始提取是今年什么时候&#xff1f;&#xff08;答案格式&#xff1a;04-12 13:26&#xff09; 09-11 17:21 这题做错了 其实当时盘古石手机取证里面就有的&#xff0c;想多了去看了日志文件 是真的有点歧义&#xff0c;20分就开始提取任务了 2.嫌疑人手机SD卡存…

精通git,没用过git cherry-pick?

前言 git cherry-pick是git中非常有用的一个命令&#xff0c;cherry是樱桃的意思&#xff0c;cherry-pick就是挑樱桃&#xff0c;从一堆樱桃中挑选自己喜欢的樱桃&#xff0c;在git中就是多次commit中挑选一个或者几个commit出来&#xff0c;也可以理解为把特定的commit复制到…

【实验记录】AGW | Visible-Infrared Re-ID

【RT】Visible Thermal Re-IDDeep Learning for Person Re-identification: A Survey and Outlook中提出了一个针对单/跨模态行人重识别的baseline&#xff1a;AGW 做过两次&#xff0c;在测试阶段有问题&#xff0c;现在再重做一次&#x1f914;Code RTX3090 修改数据集路…

手机相机系统介绍

目录 一张照片是如何生成的? 相机的成像原理 相机硬件 颜色四要素 相机硬件三大块 模组结构 镜头 镜头光路 镜头常见参数 镜头-FOV&EFL 镜头-焦距 镜头-光圈 图像传感器 图像传感器-像素-底 RGB排布 图像传感器-Pattern & PDAF Sensor CMOS sensor …

计算机类软件方向适合参加的比赛

前言 博主是一名计算机专业的大三学生&#xff0c;在校时候参加了很多比赛和训练营&#xff0c;现在给大家博主参加过的几个的比赛&#xff0c;希望能给大一大二的学生提供一点建议。 正文 最近也有比赛的&#xff0c;我会从时间线上来给大家推荐一些比赛&#xff0c;并且给…

雷柏mv20鼠标使用体验

用了1年多&#xff0c;第一次用竖着的鼠标&#xff0c;现在已经很习惯了&#xff0c;感觉还不错。说说使用感受&#xff1a; 1、 仍然是长时间使用鼠标&#xff0c;但是很少出现手腕痛的情况&#xff0c;确实是有一定效果的。 2、使用场景是有限制的&#xff0c;我是配合笔记…

解决kali beef启动失败问题及实战

文章目录 一、解决方法二、靶场实战应用1.首先打开dvwa这个靶场&#xff0c;设置难度为low2.打开xss-stored3.准备payload4.提交payload5.利用 一、解决方法 首先需卸载 ruby apt remove ruby 卸载 beef apt remove beef-xss 重新安装ruby apt-get install ruby apt-get insta…

安卓修改ROM 修改固件中的一些基本常识 自己做rom注意事项

修改rom 制作rom 解包rom的一些问题解析 安卓系列机型如何内置app 如何选择so文件内置 修改设置里 添加选项 添加文字 修改图标 修改版本号等等 实例解析 最近有几个粉丝对修改rom有兴趣。今天主要给这些友友提供一些自己初学修改rom的一些建议和思路&#xff0c;可以供大家…

uni-app:多方法实现两个view在同一行展示

效果 方法一&#xff1a;flex 布局 使用 display: flex 后&#xff0c;默认的 flex-direction 值就是 row&#xff0c;即水平排列。 <template><view class"container"><view class"left-view">123</view><view class"r…

SpringBoot的excel模板导出

Word的模板导出(参考&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill) 创建有两个sheet的excel文件模板 将模板文件放入resource\templates/doc下使用 public void exportUavInfoExcel(HttpServletResponse response, CaseExportRPO cas…

GB28181协议-SDP详解

SDP协议 SDP全称是Session Description Protocol&#xff0c;翻译过来就是描述会话的协议。主要用于两个会话实体之间的媒体协商。 SDP描述由许多文本行组成&#xff0c;文本行的格式为<类型><值>&#xff0c;表示为keyvalue; SIP负责建立和释放会话&#xff0c…

架构问题:技术选型

1. 几款数据库特性及如何选型 1.MySQL&#xff1a;一种常用的开源关系型数据库管理系统&#xff0c;可以快速访问大量数据&#xff0c;并支持多用户同时访问。其最大的优点在于成本低&#xff0c;易于安装和配置&#xff0c;因此被广泛应用于各种中小型企业和网站。支持读写分离…

C++ Primer----1.5类简介 章节练习

头文件 Sales_item.h #ifndef SALESITEM_H #define SALESITEM_H #include <iostream> #include <string>class Sales_item{ public:Sales_item(const std::string &book):isbn(book),units_sold(0),revenue(0.0){}Sales_item(std::istream &is){ is >&…