在上一篇文章中我们介绍了JavaScript面向对象-使用工厂方法和构造函数方法创建对象,本文将继续了解:"什么是正则表达式?"。
正则表达式的英文全称是Regular Expreession,简称为RegExp。正则表达式最早由数学家Stephen Kleene在1956年提出,这是他在对自然语言的递增研究成果的基础上提出来的。从那时起,正则表达式经过几个时期的发展,现在已经被ISO(国际标准化组织)批准和被Open Group组织认定。
正则表达式并不是一门专用语言,但是它可用于在一个文件或字符串了查找和替换文本。它具有两种标准:基本的正则表达式(BRE)和扩展的正则表达式(ERE),ERE包括BRE和其它一些概念。
许多程序中都使用了正则表达式,包括xsh、egrep、sed、vi以及在UNIX平台下的众多其它程序。许多编程语言和开发工具中也使用了正则表达式,例如JavaScript、Perl、Java、.NET、C#、Python、PHP、HTML和XML等,但是它们通常只是使用了整个标准的一个子集而已。
正则表达式的概念
简单的来说,正则表达式是一种用于模式匹配和替换的强有力的工具。正则表达式可以通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。
举例来说,正则表达式的一个最普遍的应用就是用于验证用户输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件的地址格式正确,用户填写的表单信息就会被正常处理,否则会弹出提示框,要求用户重新输入。
我们在本地计算机中搜索硬盘中的文件的时候,可以使用通配符?
或*
,?
匹配单个字符,*
匹配0个或多个字符。例如,我们在资源管理器中使用data?.dat
进行搜索的时候,可能会找到的文件有:data1.dat、data2.dat、datax.dat等,就是以data开头,后面接任意字符,后缀为dat的所有文件。
尽管上面的这种搜索文件的方法十分有用,但是功能还是十分有限。例如,使用这两个通配符,我们能够找出文件名以a开头,以b结尾,文件名长度为5个字符的所有文件吗?正则表达式的思想与通配符非常相似,但是它使用了更多的专用字符,更为复杂的语法规则,所以它的功能也更为强大。
正则表达式就是由普通字符以及特殊字符(也叫元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式使用正斜杠进行分割,例如:/abs/
就定义了一个简单的正则表达式。
正则表达式的用途
我们通过使用正则表达式,可以:
-
测试字符串是否符合某个模式。
-
替换文本。
-
根据匹配模式从字符串中提取一个子字符串。
JavaScript提供了大量元字符用于控制和表达式匹配模式。利用匹配模式,可以查找只包含数字、只包含字母或包含字母数字的字符串,也可以查找数字开头、后面跟任意多个字母,并且以数字结尾的字符串等等。
JavaScript的正则表达式主要用于在客户端验证用户的输入。当用户填写了一张表单并提交之后,表单中的数据被发送到服务器进行处理。虽然这些数据可以在服务器端的程序中进行验证,但是发送这些数据之前在客户端完成数据的验证效率会比较高,速度会更快,同时也减轻了服务器的负担。这正是JavaScript的重要功能之一。
用户填写表单之后,点击提交按钮的时候,JavaScript使用正则表达式来验证用户填写的数据,所有数据都正确时才将数据提交到服务器,否则提示用户重新填写。