您的位置:首页 > Web前端 > JavaScript

js正则表达式小记

2016-09-26 00:36 225 查看
Js正则表达式小记
最近因为一些事情,突然对正则有了兴趣,就到网上搜罗了一些文章,看了一下,发现大同小异,于是决定自己写个小记,为了互联网的开源分享精神,也为了以后查找方便。这篇文章便以一个常见的正则验证邮箱为例,进行简单说明,因为完整的正则表达式过于庞大,这里就不细说了,有兴趣的同学们可以去网上找一些资料进行完整的学习。

有很多人可能觉得正则表达式看不懂,一堆的字符串,各种字符,没错,这就是正则,只需要简单的字符就可以完成大部分的字符匹配任务。比如本章要讲的匹配用户输入的邮箱是否正确。

下面是一些正则的常用匹配字符:

^匹配一个输入或一行的开头
$匹配一个输入或一行的结尾
*匹配前面字符0次或多次
+匹配前面字符1次或多次
?匹配前面元字符0次或1次
{n}表示匹配前面的字符n次
{n,m}表示匹配前面的字符n-m次
\d表示匹配数字类型
\w表示匹配数字或者字母类型(包含下划线_)
\s匹配空格(也包括Tab等空白符)

那么接下来我们就可以开始写第一个正则表达式了

这里附上一个在线的正则表达式工作面板:http://www.regexlab.com/zh/workshop.htm

比如我们要匹配一个’javascript’字符,那么我们可以这样写:

\w{1,}或者\w+,当然还有很多其他写法,大家可以进行验

证。

那么接下来我们来练习一个匹配手机号和座机号的正则:

手机号的非常简单,一般来说都是11位号码,因此我们这里就判断11位的手机号:

这个匹配的正则表达式是这样的\d{11},那么我们来试一下好了。从下图中可以看到11位手机号匹配成功。



接下来看一下座机号的表达式:\d{3}\-\d{3,8}

这个表达式的意思我们来解读一下,他匹配前面的3个数字做为区号,然后匹配了一个中划线-在接下来匹配的才是我们的电话号码。我们一起来看一下结果。



接下来我们讲一下正则里面的另外一种方式,范围匹配:

[]中括号,[]里面的内容表示要匹配的范围,但是他只能匹配其中的一个,比如:

l [0-9a-zA-Z\_] 可以匹配一个数字、字母或者下划线

l [0-9a-zA-Z\_]+ 可以匹配至少由一个数字、字母或者下划线组成的字符串,比如 'a100' , '0_Z'

l A|B 可以匹配A或B

也许大家注意到了,上面还说了一个|,这个是左右两边有一个匹配即可,相当于一个or。

接下来我们分析一下匹配邮箱需要匹配哪些字符:

1. 邮箱的前缀,也就是@的前面这部分,这部分有可能出现的有数字,字母,下划线等

2. 最重要的莫过于@符号

3. @后面的邮箱名称部分,如163,126,qq,gmail

4. 最后的.com或者其他的后缀,这里以.com为例

分析完了,那么我们接下来只需要进行这四段的匹配就可以了,来看一下表达式的写法:

([\w\.]*)\@(\w*)\.([com]*)

这个表达式的第一部分是([\w\.]*)它可以匹配多个字母,数字,下划线以及点.这个字符来做为邮箱的前缀;第二部分:\@用来匹配@符号;第三部分:(\w*)用来匹配邮箱名,因为他可能是数字也可能是字母;第四部分:\.([com]*)这里匹配.com,这里我为什么不直接写\.com呢,因为这样写的话,如果需要加入其它的后缀,那么会更方便添加。好了,接下来我们来看一下匹配结果:



匹配成功,那么本篇文章就到这里,希望对大家能有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息