正则表达式基础

在我之前的技术分享中偶尔会看到一些关于正则表达式的使用,不过对于没有接触过这一块的人并不清楚正则表达式到底是什么是怎么写的,那今天我就给大家讲解一下正则表达式。
首先什么是正则表达式,正则表达式又称为规则表达式,在处理某些字符串时通常被用来检索和替换那些符合某个规则的文本。简单来说就是用来匹配文本的一个工具。比如说之前分享中看到的匹配一个图片的路径,匹配出目录后替换掉目录等。
正则表达式在学习MVC中也是很重要的一块,主要在文件的上传和处理等时候会频繁使用。它这么重要看上去又么复杂,那要怎么写呢?其实很简单。
我们先来看一个单词“Luckily”,这时候要匹配这个单词用正则表达式就可以用\bLuckily\b来匹配到这个单词,当这个单词和其它单词混合在一起时也可以精准匹配到这个单词,假如用这个正则来匹配你正在输入这个单词,只要你输入有一点错误就不会匹配到,来做一个演示:
在这里插入图片描述
如上图是使用的是一个专门用来测试正则表达式匹配的软件,可以自行网上找。上面输入了正则表达式,下面所要匹配的单词在一个句子里,使用\b可以精确的匹配到这个单词,然后我们演示一下当单词在输入的时候打漏了一个字母发生的情况。
在这里插入图片描述
结果是完全匹配不到,如果说匹配内容换成一个除单词外的东西会怎样呢?结果是什么也匹配不到。\b代表着匹配单词的开始和结束,但也不是所有单词都能匹配到,比如说有些单词是有空格等字符的,而\b并不会匹配到那些分隔符,因为在\b内输入的匹配单词中间不允许有空隔开,必须是一个完整的单词。
假如想匹配这个‘every Luckily’就可以这样写:\bevery\b.\bLuckily\b,先匹配到第一个单词,再匹配中间部分的,最后匹配后面那个单词,这样一个正则表达式就可以将这一整个匹配出来。
这个‘.’是用来匹配除换行符意外的任意字符。只要不是回车,所有字符都可以匹配出来。而这个‘
’是一个限定符号,它是限定前面所匹配的东西的次数,匹配零次或更多次。在这里它中间匹配到的可能有也可能没有。
根据上面的例子多少会有些了解了,但难免很多人可能不会英语(或者说忘记了英语),在匹配单词的时候会有不适应,那么我们来匹配一串数字。
在这里插入图片描述
这里有三个随机输入的电话号码,当你只是单纯的想匹配所有的数字那么可以直接使用\d来匹配到所有的数字,因为是匹配所有数字,所有你就不用输入任何东西便可以直接匹配到。
毕竟是电话号码,如果要准确地匹配这三种的话就可以这样写:
在这里插入图片描述
(?\d{3})?-?\d{8}:这样写是可以准确地匹配到这三个电话号码,在这里是没错的,但是它还有一定缺陷,它还可以匹配出“(213-74318503”这样的一串字符串,可它并不是一串电话号码,所以这个匹配的正则表达式是需要优化的。
在这里插入图片描述
(\d{3})\d{8}|\d{3}-?\d{8}:这是优化后的正则表达式,它同样可以匹配到这三个电话号码,同时它不会匹配出例如“(213-74318503”这样的字符串。
其中涉及到了比较多的字符,这里的“\”便不再多讲,在演示的过程中相信大家已经了解到了它的用意。它是一个转义字符,比如在正则的输入框内输入的一给个正则表达式所匹配的东西中含有“\”就需要进行转义才能匹配到,不然会被当做转义另一个匹配字符。
问号也是一个限定字符,它是重复零次或一次,要么这里没有匹配的字符,要么就只能出现一次。
大括号内所输入的是匹配字符的长度,在匹配电话号码时,前面两种的后面那串数字都只有8位数,用一个\d{8}便可以匹配到后面的一串数字,当然这串数字也是随机的,只要时8位数的数字都行。
经过两个例子的介绍,相信大家已经了解了不少,下面为大家介绍一下其它几种常用的字符:
元字符之前介绍的“.”就是一个元字符,还有\d和\b也是。
\w:它是匹配数字、字母、下划线或者汉字。
\s:它匹配的是任意的空白符,不管是换行,还是空格,还有个tab,它们都可以被\s匹配出来。
在一长串字符中匹配你所需要的东西难免会有一些处理比较麻烦的,比如一个src,在一个混合的字符串内很可能匹配两个或以上不同的东西,但是你只想要一个src的路径,这时候就需要用到“^”和“$”,这两个是专门用来匹配字符串的开始和结束的(以什么为开始,以什么为结束)。
限定符之前也讲过一些,还有其它几种,
“+”它是重复重复一次或更多次,可以和“*”、“?”一起记。
还有几种比较特殊的:{n}是重复n次,就是之前的{8},重复多少次就输入多少。{n,}重复n次或更多次,{n,m}重复n到m次。
在元字符的匹配中还有反义的,就是大写和小写,比如\W是匹配不是换行符意外的任意字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值