html5知识点:简析正则表达式
很多⼈对正则表达式的印象都是⽤来做表单验证的,这其实是不⼤准确的。正则表达式⽬前在很多软件中都得到了⼴泛的应⽤,包括Linux,Unix等操作系统,VBScript,Java,PHP等开发环境中,以及很多应⽤软件都能应⽤到正则表达式。
⼀,正则的历史。
⾸先先来扫清⼀个误区,⽼是有⼈认为正则表达式是JS⾃⼰发明的,这当然是不正确的。1956年,⼀位名叫Stephen Kleene的数学家在McCulloch和pitts早期⼯作的基础上,发表了⼀篇标题为“神经⽹的表⽰法”的论⽂,第⼀次引⼊了正则表达式的概念。所谓的正则表达式就是⽤来描述被他称为“正则集的代数”的表达式,因此采⽤了“正则表达式”这个术语。
随后,⼈们发现可以将这⼀⼯作应⽤于使⽤ken Thompson的计算搜索算法的⼀些早期研究,Ken Thompson是Unix的主要发明⼈,第⼀个将正则表达式使⽤在应⽤程序上的就是Unix中的qed编辑器。从那时起直⾄现在正则表达式都是基于⽂本的编辑器和搜索⼯具中的⼀个重要部分。
正则表达式的发展历史并不是特别的长远,但是推出之后却迅速被各⼤编程语⾔所吸收采纳。这主要得益于它⾃⼰的特点:
第⼀,相较于传统的验证⽅式,正则表达式可以更⾼效的完成需要做的验证⼯作。
第⼆,捕获字符串的能⼒,正则也可以很好的完成⼯作,⽐如截取url的域名或者其他的内容等等。
第三,表达灵活和写法简洁。从表单中复杂的各种验证,到对字符串的各种处理,都可以⽤正则表达式轻松实现。
⼆.正则表达式的定义
正则表达式描述了⼀种字符串匹配的模式,可以⽤来检索⼀个字符串中是否含有某种⼦字符串,将匹配的⼦字符串做替换或者从某个串中取出符合某个条件的⼦字符串等。
正则表达式是由普通字符(a-z)以及特殊字符(也叫元字符)组成的⽂字模式。正则表达式作为⼀个模板,将某个字符模式与所搜索的字符串进⾏匹配。
2.1普通字符
由所有那些未显⽰指定为元字符的打印和⾮打印字符组成。这就包括了所有的⼤写和⼩写字符字符,所有数字,所有的标点符号以及⼀些符号。
2.2特殊字符
特殊字符,指有特殊含义的字符,如“*.exe”中的*.简单的说就是表⽰任何字符串的意思,如果要查⽂件名中有*的⽂件,则需要对*进⾏转义,即在其前⾯加⼀个\.ls  \.exe。
正则表达式⾥的特殊字符$,( ),*,+,...[,?,\,^,|
$匹配输⼊的字符串的结尾位置。
()标记⼀个⼦表达式的开始和结束位置。
*匹配前⾯的⼦表达式零次或多次。
+匹配前⾯的⼦表达式⼀次或多次。
.匹配除换⾏符\n之外的任何单字符。
[标记⼀个中括号表⽰式的开始。
字符串截取指定字符后的文字
匹配前⾯的⼦表达式零次或⼀次。
{标记限定表达式的开始。
\将下个字符标记为特殊字符,或原意字符,或向后引⽤,或⼋进制转义符。
^匹配输⼊字符串的开始位置,除⾮在⽅括号表达式中使⽤,此时它表⽰不接受该字符集合。
|指明两项之间的⼀个选择。
2.3限定符
限定符⽤来指定正则表达式的⼀个给定组件必须要出现多少次才能满⾜匹配。有*,+,?,{n},{n,},{n,m}共6种。
*匹配前⾯的⼦表达式零次或多次.
+匹配前⾯的⾃表达式⼀次或多次,?匹配前⾯的⼦表达式零次或⼀次。
{n} n是⼀个⾮负整数,匹配确定的n次。
{n,}n是⼀个⾮负整数,⾄少匹配n次。
{n,m}m和n均为⾮负整数,且n<=m,最少匹配n次且最多匹配m次。
2.4定位符
⽤来描述字符串或单词的边界,^和$分别指字符串的开始和结束,\b描述单吃的前或后边界,\B表⽰⾮单词边界,不能对定位符使⽤限定符。
三.正则表达式在web中的应⽤
正则表达式在web系统中的应⽤⼴泛,可以进⾏数据格式检测,替换相关⽂本,提取感兴趣的⽂本内容等。
例如:验证字符串中E-mail地址的合法性
邮件地址格式是<⽤户名@域名>,对于⽤户名,除了数字和字母外,有的允许有“-”,有的允许有“.”,也有的两者都可,或者允许其他的特殊字符。对此我们只能根据具体情况判断。⽂字中假设除字母和数字外还允许“.”“-”并且“.”“-”不嗯给你出现在⾸末位。“,”“。”“-”不能相连。域名中各段除数字和字母外只允许出现”-”且不能不出现在⾸位和末位,各段⽤“.”连接,我们可以从域名得知最后⼀段⼤于⼀位且只有字母,根据以上内容我们可以写出表达式俩判断该串是否是合法的邮件地址。
是不是感觉很⿇烦,光听规则就感到头疼?别急,分部解释如下:
^:匹配开始
([a-z0-9A-Z]+[-|\.]?)+:数字或字母⼤于⼀位,“-”或”.“以上组合重复1次以上。
[a-z0-9A-Z]:⽤户名以数字或字母结尾。
@:匹配“@”[a-z0-9A-Z]+匹配多位数字或字母
(-[a-z0-9A-Z]+)?:匹配⼀加多位数字或字母0次或1次。
\.:匹配”.”
+:匹配括号内的内容多次
[a-zA-Z]{2,}匹配字母2次以上
$:匹配结尾把上⾯的各项组合⼀起,就可以匹配⼀个⽐较全⾯的邮件地址,正则表⽰式如下:
^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$
复杂么?整个来看确实还蛮复杂的,但当你把功能分开,先逐个实现,再组合在⼀起,其实也没那么复杂吧。
全栈⼯程师需要懂正则来做各种表单验证,字符串处理,架构师也要懂正则表达式,因为框架中都会⽤到正则表达式。那么,根据前⽂提到的,正则表达式理所当然是我们必须学会的语⾔之⼀。HTML5的正
则表达式项⽬开发课程有啥特点呢?最⼤的特点就是突出实⽤和⾼效。在精通前端的基础上学习正则表达式,能够更好的站在更⾼的层次去思考和学习正则表达式。
正则表达式项⽬开发课程如何讲授呢?主要突出以下⼏点:
第⼀,循序渐进。本课程先从基础讲起,先让学⽣熟悉更种字符串操作,掌握字符串的验证⽅式。然后结合实际,⼀个实际的在线项⽬,然后分析验证的⽅式和⽅法,讲解正则表达式的⽤法。
第⼆,项⽬驱动。全程以项⽬来驱动知识点的学习,在了解实际的需求后,⽤正则表达式实现我们的需求。
第三,注重实战。学⽣在听完讲师的课堂⾯授后,要亲⾃动⼿完成另⼀个新项⽬。
正则表达式项⽬开发课程内容包含正则表达式基础,⾼级的⽤法及各种常见验证的写法⽤三个组成部分,具体内容如下:
第⼀部分:正则表达式的基础。本部分主要包含三个⽅⾯:
正则表达式基础。内容主要包含正则的语法,常见符号及简单的表单验证。
第⼆部分:⾼级⽤法及复杂的正则验证。
第三部分:个具体的项⽬,在实际中体会正则的好处。
四.结语
正则表达式语法简洁,功能强⼤,特别在对数据的验证问题上,在⽇常数据处理与软件开发中,正则表达式已成为不可缺少的⼯具,相信随
着web⽹的发展,正则表达式的应⽤会越来越强⼤越来越易使⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。