HTML5前端入门教程:简析正则表达式

很多人对正则表达式的印象都是用来做表单验证的,这其实是不大准确的。正则表达式目前在很多软件中都得到了广泛的应用,包括Linux,Unix等操作系统,VB,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。

正则表达式里的特殊字符

包含$,( ),*,+,...[,?,,^,|

$匹配输入的字符串的结尾位置。

()标记一个子表达式的开始和结束位置。

*匹配前面的子表达式零次或多次。

+匹配前面的子表达式一次或多次。

.匹配除换行符 之外的任何单字符。

[标记一个中括号表示式的开始。

?匹配前面的子表达式零次或一次。

{标记限定表达式的开始。

将下个字符标记为特殊字符,或原意字符,或向后引用,或八进制转义符。

^匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。

|指明两项之间的一个选择。

2.3限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

有:*,+,?,{n},{n,},{n,m}共6种

*匹配前面的子表达式零次或多次.

+匹配前面的自表达式一次或多次,?匹配前面的子表达式零次或一次。

{n} n是一个非负整数,匹配确定的n次。

{n,}n是一个非负整数,至少匹配n次。

{n,m}m和n均为非负整数,且n<=m,最少匹配n次且最多匹配m次。

2.4定位符

用来描述字符串或单词的边界,^和$分别指字符串的开始和结束,描述单吃的前或后边界,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网的发展,正则表达式的应用会越来越强大,越来越易使用。

来源:千锋HTML5

原文地址:https://www.cnblogs.com/qfdeu/p/9073115.html

时间: 2024-09-29 20:43:55

HTML5前端入门教程:简析正则表达式的相关文章

HTML5前端入门教程:Ajax 异步请求技术

AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). ?ajax不是新的编程语言,而是一种使用现有标准的新方法.ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ?ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. ?ajax是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换.ajax可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的

正则表达式入门教程&amp;&amp;经典Javascript正则表达式----share

前言 例子: ^[email protected]+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 一个学习正则表达式不错的教程,对正则表达式有兴趣,但不太了解的童鞋可以参考下 以下内容摘自 常用JQuery数字类型验证正则表达式整理  和    经典Javascript正则表达式         [  留个备份 :) ~~  ]     常用JQuery数字类型验证正则

零基础HTML5游戏入门教程 第1章

第一章 绪论 HTML一直是网络编程的基石,其他任何编程语言,不论是PHP.Phython.CSS还是 JavaScript,都必须以HTML为基础. 上一代的标准,HTML4.01在1999年制定之后,统治互联网长达15年,越来越跟不上飞速发展的网络的步伐,尤其是在无线互联日益普及的今天.终于,在多年的争论和妥协之后,万维网联盟(W3C)在1个月前发布了HTML新标准.让我们一起来迎接我们的新王者HTML5. HTML5对网络的提升是多方面的,本教程只关注游戏方面.其实HTML5是一个相当不错

WebGIS中等值线前端生成绘制简析

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 等值线是GIS制图中常见的功能,一般有两种思路:一种是先进行插值生成等值面栅格图,然后将等值面提取成等值线:另一种是进行插值后,直接再根据算法进行插值点连接生成一条尽量闭合以及平滑的曲线. 在进行插值中,有很多算法可以选择,各种算法中也会有不同的参数需要调试,并且更具实际情况,比如地理环境因素等进行微调,最后建模.这里我们要讨论的是忽略一切外在因素,只根据坐标

简析正则表达式

前段时间我利用业余时间开发了一套基于标签的CMS系统,在其中为了处理基于标签的数据提取与数据填充大量的使用了正则表达式,在这里将我将正则表达式的语法和用法进行简单的描述,然后下篇中将介绍在c#中利用正则表达式的方法与代码实例. 什么是正则表达式基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.我们使用一种自定义的模式来匹配一定数量的文本,并从中提取所需数据.如同window的通配符,如:*.txt查找所有txt文件.*就被解释成任意字符. 一个简

HTML5新手入门教程,使用记事本编写第一个网页

· 背景 趁着处于学生狗时代又是在暑假期间,我们刚刚好利用这个时间来学习一下另一个对于我现在还没接触过的领域,那就是网页编程.虽然说我想做一名Android工程师,但是现在Android开发的跨平台性使得Android编程不再仅仅局限于原生开发.我个人学习Android已经将近一年了,记得从去年的暑假,自己拿了学校讲课的书一边敲一边学习Android基础.后来因为书内容有限,自己又买了<第一行代码第二版>来自学,现在Android基础知识也基本学习完了. 因为对于Android的兴趣比较高,自

matplotlib 教程简析

介绍 功能简介 基础功能 使用简介 Pyplot示例 图的种类 图片示例 一个完整的plot的例子 使用style sheets与 rcParams控制格式 style sheets rcParams 中级功能 Artist 教程 legend 教程 cycler教程 改变Figure布局 布局教程 控制图片方向 高级功能 路径 路径效果 转换坐标系 颜色 指定颜色 定制Colorbars 定制colormap colormap 分布 选择colormap 文本 Matplotlib Plots

JAVA 编程 入门程序简析

//filename: HelloWorld.java public class HelloWorld {          public static int data = 100;          public static void main(String[] args) {                  System.out.println("Hello Java world!");                  System.out.println(data);  

前端入门教程(五)CSS样式初见

一 什么是CSS CSS全称Cascading Style Sheet层叠样式表,是专用用来为HTML标签添加样式的. 样式指的是HTML标签的显示效果,比如换行.宽高.颜色等等 层叠属于CSS的三大特性之一,我们将在后续内容中介绍 表指的是我们可以将样式统一收集起来写在一个地方或者一个CSS文件里 二 为何要用CSS 在没有CSS之前,我们想要修改HTML标签的样式则需要为每个HTML标签单独定义样式属性,如下 <!DOCTYPE html> <html> <head>