正则表达式之人人都看的懂正则

常用的数据结构以及常用的算法 常用的数据结构以及常用的算法 常用数据结构 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。 一、线性表 线性结构: 最常用、最简单的一种数据结构。 线性表: 典型的线性结构。基本特点是线性表中的 数据元素有序且有限。结构中: ① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每 阅读详情
编写验证规则最流行和最简单的方法就是正则表达式了,但唯一的一个问题是正则表达式的语法太隐晦了,让人蛋疼无比。很多开发者为了在项目中应用复杂的验证,经常要使用一些小抄来记住正则式的复杂语法和各种常用命令。


在这篇文章中,我将试图让大家明白什么是正则表达式,以及如何更轻松地学习正则表达式。

也许你是初学者,那以防万一,我先来讲讲什么是正则表达式吧:


正则表达式可以帮助我们更好的描述复杂的文本格式。一旦你描述清楚了这些格式,那你就可以利用它们对文本数据进行检索、替换、提取和修改操作。


下面有一个正则表达式的简单例子。第一步先要引入有关正则式的命名空间:

using System.Text.RegularExpressions;

第二步就是用指定的正则式构建一个正则表达式对象,下面的正则式是用来搜索长度为10的a-z的英文字母:

Regex obj = new Regex("[a-z]{10}");

最后,根据正则式在指定数据中检索匹配项,如果匹配IsMatch方法就会返回true。

MessageBox.Show(obj.IsMatch(“shivkoirala”).ToString());

3个重要的正则式命令


记住正则语法最好的办法就是记住这三样东西:Bracket(括号), caret(插入符号)和Dollars(美元符号)。



B


在正则表达式中有3种类型的括号


方括号 “[“和花括号“{“ 。


方括号"["内是需要匹配的字符,花括号"{"内是指定匹配字符的数量。


圆括号“(“ 则是用来分组的。


C

插入符号 “^” 表示正则式的开始。


D

美元符号“$” 表示正则式的结束。

现在你知道上面的3个语法后,你就可以写世界上任何一条验证规则了。比如下面的例子就很好的说明了上面3条正则语法是如何协调运作的。




注:上图有个错误,"()"应为"{}"


上面的这条正则式只能匹配a-z的英文字母,同样是在中括号中标明匹配范围。


花括号中则是标明匹配字符串的最小长度和最大长度。


最后为了让表达式更规则,分别在开头和结尾加上了插入符号"^"和美元符号"$"。


好了,现在我们就用上面的3条语法来实现一些正则表达式的验证规则吧。


检查用户是否输入了shivkoirala?

shivkoirala

让我们开始第一个验证,输入的字符在a-g之间?

[a-g]

输入的字符在a-g之间并且长度为3?

[a-g]{3}

输入的字符在a-g之间并且最大长度为3最小长度为1?

[a-g]{1,3}

我如何在匹配像91230456, 01237648那样的固定8位数?

^[0-9]{8}$

如何验证最小长度为3最大长度为7的数字,如:123, 1274667, 87654?

^[0-9]{3,7}$

如何验证像LJI1020那样的发票编号,前3个是字母剩余为8位长度的数字?


前三个是字母:

^[a-z]{3}

后面是8位长度的数字:

[0-9]{8}

所以整个表达式为:

^[a-z]{3}[0-9]{7}$

验证像INV190203 或 inv820830那样的前3位是不区分大小写的英文字母,剩余8位是数字。


在前面的表达式中只能匹配前3个是小写英文字母的发票编号,如果我们输入大写字母那就不能匹配了。所以为了确保前3个字母是不区分大小写的,我们就要用表达式^[a-zA-Z]{3}。

^[a-zA-Z]{3}[0-9]{7}$

我们可以验证简单的网址URL格式吗?


第一步:检查是否存在www:

^www.

第二步:域名必须是长度在1-15的英文字母:

. [a-z]{1,15}

第三步:以.com或者.org结束:

. (com|org)$

完整的表达式如下:

^www[.][a-z]{1,15}[.](com|org)$

让我们在来看看BCD(其实也就是上面说的3条基本语法)如何验证email格式。


第一步:email开始是长度在1-10的英文字母,最后跟一个"@":

^[a-zA-Z0-9]{1,10}@

第二步:@后面是长度在1-10的英文字母,后面跟一个".":

[a-zA-Z]{1,10}.

第三步:最后以.com或.org结束:

.(com|org)$

最后完整的表达式如下:

^[a-zA-Z0-9]{1,10}@[a-zA-Z]{1,10}.(com|org)$

验证值在0-25的数字:

^(([0-9])|([0-1][0-9])|([0-2][0-5]))$

验证格式为MM/DD/YYYY, YYYY/MM/DD and DD/MM/YYYY的日期:

步骤


正则式


描述说明


先来检查 DD. 首先DD的长度为1-29 ( 2月份) , 1-30 (月小) , 1-31 (月大) .


所以 DD 就是 1-9 或 01-09


[1-9]|0[1-9]


允许用户输入1-9或者01-09.


再为DD添加匹配10-19


[1-9]|1[0-9]


允许用户输入01-19.


再为DD添加匹配20-29


[1-9]|1[0-9]|2[0-9]


允许用户输入01-29.


i再为DD添加匹配30-31


[1-9]|1[0-9]|2[0-9]|3[0-1]


最后用户可以输入01-31.


再来匹配日期间的分隔符"/","-"


[/ . -]


允许用户输入日期分隔符.


MM也是类似的操作


[1-9]|0[1-9]|1[0-2]


让用户输入月份值01-12.


最后就是YY的操作


1[9][0-9][0-9]|2[0][0-9][0-9]


允许用户输入年份1900-2099.

最后DD/MM/YYYY格式的日期的正则表达式为:

^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .]([1-9]|0[1-9]|1[0-2])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$

MM/DD/YYYY格式的日期:

^([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$

YYYY/MM/DD格式的日期:

^(1[9][0-9][0-9]|2[0][0-9][0-9])[- / .]([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])$

快捷命令


你也可以用以下的快捷命令来简化你的正则表达式:

实际命令

快捷命令


[0-9]

d


[a-z][0-9][_]

w


0次或多次发生

*


至少一次发生

+


0次或1次发生

?

全文完。

本文转载至 http://www.haokoo.com/internet/4038782.html ,感谢原作者的贡献

World Creator地形导入UE 导出预设选择高度图(heigh map)格式选择PNG 16位,或者RAW 16位,需要反转y轴(与虚幻不同),命名格式会自动带一个× , 将×改成_ 或者删掉自己命名 (虚幻名称不支持x符号)导入虚幻 , 修改Z轴 , 就是用 地形最高 - 地形最低 , 然后除以512 , 再乘以100。把这个数字填入Z轴缩放 , 点击生成即可。 阅读详情

相关推荐

在MacBook M1/M2上,手把手教你打包包含嵌入模型的RagFlow Docker镜像(避坑指南)

本文详细指导如何在MacBook M1/M2上构建ARM64架构的RagFlow Docker镜像,涵盖环境准备、依赖处理、镜像构建及性能优化全流程。特别针对Apple Silicon芯片的兼容性问题提供解决方案,帮助开发者高效完成本地开发环境搭建。

weixin_26908317的博客 242

正则文法和正则表达式的相互转化

一、正则表达式转换成正则文法 例1.(a|b)*a(a|b)(a|b) 转换成左线性正则文法: (1).S->Aa|Ab (2).A->Ba|Bb (3).B->Ca (4).C->Ca|Cb|ε 由观察发现,一个正则表达式转换成左线性正则文法,需要从右边开始分解。 (1).Aa型最简单,为一个连接运算,可化为S->Aa。 (2).A(a|b)型为一个选择

swust_long的专栏 2万+

PCIe中ACS知识小记

虚拟机内部的访问数据显而易见是带的GPA地址。而目前几乎所有的PCIe 设备都带ACS control,所以它们可以单独assign给不同的VM,但是随之而来的就是即使两个GPU同时assign给同一个VM,由于ACS的存在,他们之间也不会有真正的物理层面的P2P访问。每一个TLP都自带一个address(寻址类TLP),同时每一个endpoint,PCIe switch都自带一段BIOS配置的地址空间范围,一旦这个TLP的address落入某个设备的地址范围,那么这个TLP就属于这个设备并消费。

Summer的博客 5077

正则表达式

1. 正则表达式 1、动机: 1、文本处理已经成为计算机的常见工作之一 2、对文本内容的搜索,定位,提取是逻辑比较复杂的 3、为了快速方便的解决上述问题,产生了正则表达式技术 2、定义: 即文本的高级匹配模式,提供搜索、替代等功能,本质是由一系列特殊符号和字符组成的字串,这个字串即是正则表达式,这个表达式描述了字符和字符的重复行为,可以匹配一类特征的字符串 3、目标: 1、熟练掌握正则表...

FatPuffer 638

信捷XDH PLC多轴运动控制实战:Ethercat总线下的C语言封装技巧

本文深入探讨了在信捷XDH PLC平台上,如何利用C语言对EtherCAT总线多轴运动控制进行高效封装。通过设计全局数据池、模块化状态机及用户友好接口,将底层复杂的运动控制函数库抽象为清晰、可复用的高级模块,显著提升程序稳定性与可维护性,并分享了关键的实战避坑经验。

weixin_29188043的博客 160

农业AI避坑指南:用YOLO11做叶片病害检测时遇到的5个典型问题

本文分享了使用YOLO11模型进行农业叶片病害检测时常见的五个典型问题及解决方案。针对田间多变光照、病害样本不均衡、标注歧义、背景干扰和边缘部署等挑战,提供了包括场景自适应数据增强、解耦训练、软标签与鲁棒损失函数、困难负样本构建以及模型轻量化部署在内的实战经验,旨在帮助开发者提升农业AI项目的落地效果。

ujm56789012的博客 206

正则表达式完全指南_掌握正则表达式的唯一指南1

正则表达式完全指南翻译自: https://towardsdatascience.com/programmers-guide-to-master-regular-expression-f892c814f878正则表达式完全指南

weixin_26752759的博客 968

【WorkBuddy专栏53】我的WB为什么变聪明了——SOUL与USER配置管理实战(上)

【WorkBuddy专栏53】我的WB为什么变聪明了——SOUL与USER配置管理实战(上)

AI人人懂 245

读懂正则表达式就这么简单

一 前言   对于正则表达式,相信很多人都知道,但是很多人的第一感觉就是难学,因为看第一眼时,觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。 其实只是对正则不了解而以,了解了你就会发现,原来就这样啊正则所用的相关字符其实不多,也不难记,更不难懂,唯一难的就是组合起来之后,可读性比较差,而且不容易理解,本文旨在让大家对正则有一个基本的了解,能看得懂简单的正则表达式,写得出简...

weixin_30814223的博客 566

Codex、Claude Code、Opus、Trae、Cursor:一文讲懂 2026 AI 编程工具格局

2026年AI编程工具将形成三层体系:模型层(Opus/Codex)负责思考,执行层(Claude Code/Codex Agent)负责自动开发任务,工具层(Cursor/Trae)提供AI集成的开发环境。关键区别在于Agent路线强调AI主导自动化开发,而IDE路线保持人类主导。未来竞争力取决于能否将AI整合为生产力系统,掌握模型推理、Agent任务编排和AI IDE协同三大能力。核心转变是从"写代码"升级为"指挥AI写代码",高级玩家通过组合不同层级工具构建自动

m0_51738372的博客 2692

粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。

猫敷雪 893

基于人人网的简单爬虫(一)——正则表达式

   应课程实验要求,要写一个基于人人网的简单爬虫。实验要求如下:   学会使用一种编程语言实现爬取人人网关系网络的程序。该程序功能如下:1.  能够输入用户登陆所产生的cookie,允许爬虫对人人网进行爬取网页。2.  能够使用正则表达式对所获取的网页内容进行过滤,提取出所需要的重要信息。3.  能够分析所获得信息,得到社交网络中各个个体之间的好友关系。4.  能够将该关系矩阵导入到matlab中,以供数据分析使用。  本文主要针对正则表达式进行介绍。(摘自百度百科)  一个正则表达式,就是用某种

WangIcter的专栏 8184

【数据集】1970-2023年全球温室气体排放 GHG 数据集 EDGAR

1970-2023年全球温室气体排放 GHG 数据集 EDGAR

WW、forever的博客 1173

【爬虫入门】【正则表达式】【同步】爬取人人车车辆信息1.0

# 爬取人人车车车辆信息。 from urllib.request import urlopen from urllib.error import HTTPError import re, sqlite3 class RRCSpider(object): """ 人人车爬虫类 """ def __init__(self): pass ...

F_aF_a的博客 981

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

人人都看得懂的正则表达式教程

点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!编写验证规则最流行和最简单的方法就是正则表达式了,但唯一的一个问题是正则表达式的语法太隐晦了,让人蛋疼无比。很多开发者为了在项目中应用复杂的验证,经常要使用一些小抄来记住正则式的复杂语法和各种常用命令。在这篇文章中,我将试图让大家明白什么是正则表达式,以及如何更轻松地学习正则表达式。也许你是初学者,那以防万一,我先来讲讲什么是正则表

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 545

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

关于GaussDB(DWS)的正则表达式知多少?人人都能看得懂的详解来了!

摘要:GaussDB(DWS)除了支持标准的POSIX正则表达式句法,还拥有一些特殊句法和选项,这些你可了解?本文便为你讲解这些特殊句法和选项。 概述 正则表达式(Regular Expression,简称RE),通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式使用比较灵活,功能强大,因此经常被用到进行文本的搜索和替换中,帮助开发人员快速进行批量文本查询和处理。比如常用的linux的grep命令,许多程序设计语言比如Perl、Tcl也都支持正则表达式进行字符串操作。 GaussDB(..

华为云官方博客 5882

【爬虫入门】【正则表达式】【异步】爬取人人车车辆信息1.0

# 爬取人人车车车辆信息。 # 多线程/多进程:提高代码的执行效率,放在爬虫中就是提高爬取效率。因为可以使用多个进程同时对多个页面发起请求。 # 之前的糗事百科/51job同步执行:按照先后顺序一个一个执行。 from urllib.request import urlopen from urllib.error import HTTPError # 进程池:比较方便,使用简单。 from m...

F_aF_a的博客 721

整理一下正则表达式教程,浅显易懂些

整理一下正则表达式教程,浅显易懂些 编写验证规则最流行和最简单的方法就是正则表达式了,但唯一的一个问题是正则表达式的语法太隐晦了,让人蛋疼无比。很多开发者为了在项目中应用复杂的验证,经常要使用一些小抄来记住正则式的复杂语法和各种常用命令。 在这篇文章中,我将试图让大家明白什么是正则表达式,以及如何更轻松地学习正则表达式。参考来源:  人人都看得懂的正则表达式教程 htt

hello_katty的专栏 5769

vsCode中的正则表达式

所以,人工智能这一新技术的出现,对于一个文明的科技进步来说应该是有帮助的。技术是会随着时间发展的,人工智能也是需要学习的,是需要与时俱进的,这部分学习的资料就可以从这部分高阶工程师中学习。作为一个平凡普通的个体,想要在这个竞争如此激烈的社会下逆风翻盘,必须得像一位专业投资者一样,去预想社会该怎么发展,经济会怎么受到影响,各行各业会不会被重新洗牌。但随着人工智能的发展,技术变得愈来愈不重要,试想一下,未来开发一款产品,技术不再是我们关注的重点,也不再是我们的难点,这个世界,这个社会会变得怎么样呢?

weixin_51458682的博客 1992

matlab 正则化表达式_Matlab-------regexp正则表达式

句点符号 '.'——匹配任意一个(只有一个)字符(包括空格)。例如:t.n,它匹配tan、 ten、tin和ton,还匹配t#n、tpn甚至t n,还有其他许多无意义的组合。Matlab例子程序:clear;clcstr='ten,&8yn2tin6ui>&ton, t n,-356tpn,t#n,4@).,t@nT&nY';pat='t.n';[o11,o22,o...

weixin_28724003的博客 1121

Matlab-------regexp正则表达式

关于正则表达式的基本知识 正则表达式就是一个表达式(也是一串字符),它定义了某种字符串模式。利用正则表达式,可以对大段的文字进行复杂的查找、替换等。 matlab提供的正则表达式函数有三个: regexp——用于对字符串进行查找,大小写敏感; regexpi——用于对字符串进行查找,大小写不敏感; regexprep——用于对字符串进行查找并替换。 第一

奔跑的蜗牛 6万+

人人好友生日提取

<br />提取人人网中好友生日列表<br />http://code.google.com/p/renrenbdayexport/<br /> <br />步骤:登录到人人网(用了网上一哥们的代码,但忘记是哪里的了)取出内容,正则分析出生日和名字使用Google Data API登录后修改Gmail contact(尚未完成)

fxp007的专栏 1268

Python爬虫 - 人人贷散标

前言 这次爬的网站 人人贷 - 散标 是一个客户要求爬的,数据一共是148w多条,不过后来发现有绝大部分是无效数据,也就是那个页面不存在,不过我看网上很多人爬这个网站都是用什么 BeautifulSoup、Selenium,首先 BeautifulSoup 提供 Cookie 应该是能爬,不过以前的页面和现在的页面有些不同,应该有点麻烦,我没试过;而 Selenium 可以直接放弃了,就一个原因...

qq_21692945的博客 811

mysql 正则匹配多条记录_mysql正则表达式,实现多个字段匹配多个like模糊查询

现在有这么一个需求一个questions表,字段有题目(TestSubject),选项(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求字段不包含png,jpg,jpeg,gif正常情况下会这么写select * from questions where TestSubject not like '%png%' or TestSubject not like...

weixin_36105745的博客 1132
上一篇: js改变鼠标样式
下一篇: 微信号正则校验
红姬茄子
博客等级 码龄16年 8238粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值