怎么学习正则表达式?(正则的使用心得)

以前使用正则是不会自己去学或者去了解怎么实现正则的语法的,感觉好难懂的样子,于是拖到现在

 

其实正则不是我想象中的那么难,至少入门还是比较简单。我刚学习了一些比较简单的,谈谈我对正则的理解以及使用心得,希望能帮助大家

 

1、学习正则的话 ,正则手册必须看的,了解常用的字符含义,这样在学习或看或写的时候,才不会觉得(哇,这什么鬼啊,为什么这么多括号中括号大括号, 这一串串的真是是规则吗?会不会是别人乱写的。)

2、大致看了一下手册了之后,我觉得应该看一下关于正则教程的视频,图文音并茂,这样才更容易让人理解这是什么东西,然后跟着做一下。

3、看了视频了解简单的正则简单的写法就可以写一下简单的规则了。比如说验证日期、价格、年龄等,这些都是项目比较常用的且简单的正则验证。

 

最后我举一个简单的例子

QQ号的验证:

1、首先,要写验证的话,就必须了解你验证的这个有什么样子的规则。

QQ号是大多数人的青春,我相信绝大多数人都比较熟悉,那么它的规则估计并不是所有人都清除。

首先,腾讯刚开始发布QQ号的时候是从1开始的,也就是世界上第一个QQ号是1。但是为了安全等等原因,腾讯收回了4位数及更少的QQ号码,只留下了10000开始的QQ号,所以腾讯的QQ号最小是10000,最大位置,也就是说只要比10000大的数字都可以。再者,QQ号有了一个最小数,那是不是用QQ号>10000就是QQ号了呢?比如:QQ号>10000。

其实不然,因为n个0加上10000+也是大于10000的,比如00010001,但是这个数字不是QQ号。所以第一个数字不能为0,这就是QQ号的所有规则了,是不是很简单。(不好意思,废话多了)

 

2、写规则

既然我们知道了规则,就是开始写规则了,规则拆开写,三个规则,第一:QQ号必须是数字组成,第二:第一个数字不为0且是一位数,取值范围1-9,第三,QQ号位数至少是五位数。

[1-9]:[]表示一个字符的一个范围,1-9表示只能取大于等于1,小于等于9的数字。

[0-9]:因为第二个数字开始,数字就可以取值为0了,所以取值0-9

{4,}:{}表示长度,可取两个值,第一个是最小长度(必填,非负数),第二个是最大长度(选填),中间用逗号隔开,第二个不填表示无上限。QQ号为5位数,所以第一位后面需要至少有4个数字。

最后连起来就是[1-9][0-9]{4,}。如果只是验证某一个参数是不是QQ号,就需要规定什么时候开始什么时候结束,不然只要一串字符串里面连起来有符合规则的都会通过。

正则中 ^ 表示开始, $ 表示结束,为了验证某一个参数是不是QQ号,最后规则为: ^[1-9][0-9]{4,}$   ,表示这个参数里面必须以1-9的数字开头,以0-9的数字结尾,否则通不过验证。

最后  \d 等价与  [0-9] ,规则也可以写成 ^[1-9]\d{4,}$

 

 ----------------------------------------------分割线-------------------------------------------------------

 

新增:学习正则的时候可以用下这个网站,你输入的正则都可以很直观的给你解释这个正则表达的是什么意思,比如:

只要你输入一个正则表达式,无论有没有//来分割,只要是正确的格式,都可以给你解释。(digit中文是“数字”的意思,估计这个老外写的工具,所以全部都是英文

如果和我一样看不懂英文 ,就ctrl+c ctrl+v ,在百度翻译里面找答案吧,哈哈)

 

当你输入一个错误的格式的时候,就会显示如图

非常好用的一个工具, 大家学习或者看别人写的正则的时候,可以借助这个工具,祝各位早日掌握正则。

 

总结:正则验证十分强大,入门简单,适用于各种语言,多学一点,后面少苦恼一点。勤学苦练,终能成大事,希望各位一起学习、进步。

 

我是刚入门不久的前端工程师,内容写的可能不是那么精简、清楚,我会慢慢改进排版以及内容,希望各位多多指点,多多支持,谢谢

(ps: 如果有刚加入前端这个行业的,比较迷茫的同学,欢迎进群交流,希望不嫌弃的同行或者大佬加群大家一起交流,相信未来会更好,群号:815957915)

转载于:https://www.cnblogs.com/Simple-and-complex/p/10348762.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java+解析占位符,如何告诉Spring使用Java映射来解析属性占位符?

Spring提供了一个MapPropertySource,您可以在ApplicationContext的环境中注册(您需要一个大多数ApplicationContext实现提供的ConfigurableEnvironment).解析器(按顺序)使用这些已注册的PropertySource值来查找占位符名称的值.这是一个完整的例子:ConfigurationComp…

UOJ207 共价大爷游长沙

考虑到路径是有向的,不是很好维护。 如果路径无向的话,可以直接转化为链加和查询操作。 既然有向的话,不妨考虑一波hash。 对于一组询问x,y,可以把树划分为两颗子树。 合法显然需要满足 x子树的起点的hashy子树的终点的hash x子树…

mysql select null 0,查询值中为NULL,在MySQL中产生0.00

我有一个动态编写的查询(通过Joomla的OO PHP)将一些值插入MySQL数据库.用户填写的表单上有一个字段用于金额,如果它们留空,我希望进入系统的值为NULL.我已经将错误日志中的查询写出来了;这是查询的样子:INSERT INTO arrc_Voucher(VoucherNbr,securityCode,sequentia…

oracle adf_Oracle ADF移动世界! 你好!

oracle adf您好,ADF Mobile,世界! 您可能已经知道... ADF Mobile在这里! 以下是一些链接,这些链接会让您有宾至如归的感觉。 ADF Mobile主页: http://www.oracle.com/technetwork/developer-tools/adf/o…

线段树||BZOJ1593: [Usaco2008 Feb]Hotel 旅馆||Luogu P2894 [USACO08FEB]酒店Hotel

题面:P2894 [USACO08FEB]酒店Hotel 题解:和基础的线段树操作差别不是很大,就是在传统的线段树基础上多维护一段区间最长的合法前驱(h_),最长合法后驱(t_),一段中最长的合…

Linux内存管理详解

前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。 我比较喜欢搞清楚一个技术本身的发展历程…

JavaOne 2016 Essentials:7个您不容错过的事件和会话

参加JavaOne吗? 确保您不会错过这些活动 又到了每年的这个时候。 旧金山一年一度的Java假期即将来临,全市发生了超过400场会议和活动。 由于所有这些内容和新体验都一次发生,因此很容易就无法跟踪正在发生的事情。 在这篇文章中&#xff0c…

任务18:控制反转

控制反转 实现你的依赖,采用什么依赖,不由你自己决定,这个控制交给IOC容器。 这里所有的实现都不由你自己决定,我们只需要传给你就可以了。谁来传呢?容器来传给他 内存的Repository,这里实现的比较简单。 这…

程序的重定位问题(程序装入)

在多道程序环境下,要使程序运行,必须先为程序创建进程。而创建进程的第一件事就是:将程序和数据装入内存。如何将一个用户源程序变成可在内存中执行的程序,通常都要进过几个步骤:1.编译:由compiler将源程序…

matlab频响优化,MATLAB中关于频响图函数最优化的程序问题

我是一名大四的学生,现在正在做毕业设计,因MATLAB从未学过,也是边学边做,我需要求出IGv函数的频率响应图,因IGv的表达式很复杂,这里我没列出,在下面的程序中有的,以下是我的程序,请高手帮我看看程序有什么问题哈,万分感谢!%%igmax is global maximumIgmin1000000000;%%exmperim…

杂项-事务:OLTP(联机事务处理过程)

ylbtech-杂项-事务:OLTP(联机事务处理过程)On-Line Transaction Processing联机事务处理过程(OLTP)也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理…

dvd管理器java,简单DVD管理-java练习题

问题描述为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理。管理器具备的功能主要有:1、查看DVD信息。菜单选择查看功能,展示DVD的信息。2、新增DVD信息选择新增功能,根据提示输入新增的DVD名称,添加到…

从hello world 说程序运行机制

开篇 学习任何一门编程语言,都会从hello world 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的hello world。 然而,对于hello world 这个简单程序的内部运行机制,我相信还有很多人都不是很清楚。hello wor…

webapp支持什么数据库_数据库和Webapp安全

webapp支持什么数据库威胁模型 这是根据我网站上的快速参考页松散地讨论数据库和webapp安全的问题。 该页面变得笨拙,并且使读者无法轻松地与我或其他人进行交互。 威胁模型 所有安全分析必须从检查威胁模型开始。 威胁模型要求您回答四个问题: 我要…

开发进度3

对于将软件变为小程序上,还是无法成功,需要继续寻找相关资源学习 转载于:https://www.cnblogs.com/NCLONG/p/10419840.html

matlab排序函数 下标,MATLAB排序函数 - 小众知识

>> Amagic(3)A 8 1 63 5 74 9 2>> sort(A)ans 3 1 24 5 68 9 7>> sort(A,1)ans 3 1 24 5 68 9 7>> sort(A,2)ans 1 6 83 5 72 4 9Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的…

可执行程序加载到内存的过程

在linux中,程序的加载,涉及到两个工具,linker 和loader。Linker主要涉及动态链接库的使用,loader主要涉及软件的加载。 1、 exec执行一个程序 2、 elf为现在非常流行的可执行文件的格式,它为程序运行划分了两个段&…

使用Apache Storm和Apache Ignite进行复杂的事件处理(CEP)

在本文中, “使用Apache Ignite进行高性能内存计算”一书的作者将讨论使用Apache Strom和Apache Ignite进行复杂的事件处理。 本文的一部分摘自 书 。 术语“复杂事件处理”或CEP没有广泛或高度接受的定义。 Wikipedia的以下引用可以简要描述什么是复杂事件处理&a…

【BZOJ5213】[ZJOI2018]迷宫(神仙题)

【BZOJ5213】[ZJOI2018]迷宫(神仙题) 题面 BZOJ洛谷 题解 首先可以很容易的得到一个\(K\)个点的答案。 构建\(K\)个点分别表示\(mod\ K\)的余数。那么点\(i\)的出边\(j\)指向\(i*mj\ mod\ K\)。容易证明这样子一定是可行的。 但是我们显然还有一部分点是…

php 合并两个数组并去重,合并两个数组 以KEY 作为键

$a array(array(ID> 2));$b array(array(ID> 5656));print_r($r);//合并两个数组 以ID值 作为键function mergeById(&$arr1,&$arr2, $keyID){$arr array();foreach($arr1 as $v) {$arr[$v[$key]] $v;}foreach($arr2 as $v){$arr[$v[$key]] isset($arr[$v[$key…