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呢,因为这样写的话,如果需要加入其它的后缀,那么会更方便添加。好了,接下来我们来看一下匹配结果:
匹配成功,那么本篇文章就到这里,希望对大家能有所帮助。
最近因为一些事情,突然对正则有了兴趣,就到网上搜罗了一些文章,看了一下,发现大同小异,于是决定自己写个小记,为了互联网的开源分享精神,也为了以后查找方便。这篇文章便以一个常见的正则验证邮箱为例,进行简单说明,因为完整的正则表达式过于庞大,这里就不细说了,有兴趣的同学们可以去网上找一些资料进行完整的学习。
有很多人可能觉得正则表达式看不懂,一堆的字符串,各种字符,没错,这就是正则,只需要简单的字符就可以完成大部分的字符匹配任务。比如本章要讲的匹配用户输入的邮箱是否正确。
下面是一些正则的常用匹配字符:
^匹配一个输入或一行的开头
$匹配一个输入或一行的结尾
*匹配前面字符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呢,因为这样写的话,如果需要加入其它的后缀,那么会更方便添加。好了,接下来我们来看一下匹配结果:
匹配成功,那么本篇文章就到这里,希望对大家能有所帮助。
相关文章推荐
- Linux tar命令 小记
- 《人月神话》小记
- 12年的滑雪小记
- glimmer 3.02安装小记
- 2015-03-27中午小记
- C之文件输入输出小记
- PHP内置方法小记
- 分区小记
- gradle使用小记
- 2015网易iOS岗实习面试小记(广州)
- 单例模式(Singleton)小记
- centos 零碎学习小记 6.
- IMP导入小记
- cocos2d-x播放视频(VideoPlayer)小记
- 音乐作曲类软件小记
- 数据清洗小记:分类进行字符串转日期(某日期字段存在多类格式处理)
- 小记:《技术进步引发的灵感革命》网易游戏学院第二届公开日
- SecureCRT vbs脚本小记
- OpenStack kilo版DVR功能搭建小记
- Android小记:Android程序员不可错过的十款实用工具