动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

初识正则表达式

08-03 17:06 183浏览
举报 T字号
  • 大字
  • 中字
  • 小字

正则表达式,又称正规表示式、规则表示式,英文名为regular expression,在代码中常简写为regex、regexp、RE,是计算机科学的一个概念。正则表达式仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式,是描述匹配模式(pattern)的文本字符串,用于搜索和匹配字符串集。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式于40年代出现,用于描述常规语言,正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。但直到70年代才出现在编程中,由肯·汤普逊编写的QED文字编辑器是编程中找到最早使用正则表达式的地方。在最近的六十年,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。不仅仅众多UNIX工具支持正则表达式,近二十年来,在WINDOWS的阵营下,正则表达式的思想和应用在大部分 Windows 开发者工具包中得到支持和嵌入应用!从正则表达式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和发展,WINDOWS系列产品对正则表达式的支持发展到无与伦比的高度,几乎所有 Microsoft 开发者和所有.NET语言都可以使用正则表达式。如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux, Unix等]、Windows、HP、BeOS等)、主流的开发语言(delphi、Scala、PHP、C#、Java、C++、Objective-c、Swift、VB、JavascriptRuby以及Python等)、数以亿万计的各种应用软件中,都可以看到正则表达式优美的舞姿。

许多程序设计语言都支持用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则表达式引擎主要有三种:

1.传统的支持回溯的非确定性有限自动机(NFA)引擎。例如Perl、Python、Emacs、.NET、Java所使用的引擎。

2.速度更快但是限制更多的确定性有限自动机(DFA)引擎。例如awk、egrep、lex所使用的引擎。

3.标准化但是更慢的POSIX NFA引擎。例如GNU awk、GNU grep所使用的的引擎。

正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:

var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;

var r = fieldValue.match(reg);             

if(r==null)alert('Date format error!');

再举一个实际的例子,比如我们在网站中看到对用户名规则做出了如下限制:只能包含小写字母、数字、下划线和连字符,并且限制用户名长度在3~15个字符之间,如何验证一个用户名是否符合规则呢 ?我们使用以下正则表达式:

 

正则表达式是一种威力无比强大的武器,几乎在所有的程序设计语言里和计算机平台上都可以用它来完成各种复杂的文本处理工作。这样强大的一门计算机技术,值得你花费时间和精力去更深入地学习。

 

0人推荐
共同学习,写下你的评论
0条评论
渺小的人
程序员渺小的人

6篇文章贡献25135字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消