简介

先来一段介绍:

正则表达式,又称正规表示法、常规表示法(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

简单说就是:

它是对字符串执行模式匹配的强大工具。

Javascript中的正则表达式相较于其他语言来说实现的并不完整,但仍然是十分强大的,能够帮助我们完成绝大多数模式匹配任务。下面将一步一步详细介绍。

定义

在Javascript中,定义一个正则表达式有两种方式,一种是直接量,另一种是使用构造函数。

直接量

Javascript可以使用类似Perl的语法定义一个正则表达式

varr=/pattern/flags;

其中pattern是任何简单或复杂的正则表达式,flags是用以表达正则表达式行为的一个或者多个标识。

flags

  • g表示全局(global)模式,即模式将被应用于所有字符串
  • i表示不区分大小写
  • m多行模式

来看几个例子

varr1=/at/g;//匹配字符串中所有'at'的实例varr2=/.ho/gi;//匹配以'ho'结尾的三个字符的组合,不区分大小写

使用构造函数

Javascript中正则表达式的构造函数为RegExp,即RegularExpression的缩写,它接收两个参数,第一个为要匹配的字符串模式,另一个是可选的标识位。

如:

varr=newRegExp('hello','g');//匹配字符串中所有的'hello'实例

有一点一定要注意,第一个参数是一个字符串,而不是正则表达式的直接量。

元字符

在正则表达式的模式中,有一些字符是有特殊含义的,被称为元字符,如果要匹配元字符,则必须对其进行转义。

这些元字符分别是:

([{\^$|)?*.]}

例如:

//如果要匹配'/user/name'这个字符串,正则表达式需要这样varr1=/\/user\/name/;varr2=/\.ho/;//匹配'.ho'这个字符串

关于使用构造函数定义

如果使用构造函数定义正则表达式,由于构造函数的第一个参数必须是一个字符串,在匹配元字符时,这将会导致双重转义。

例如:

varr1=newRegExp('\/user','g');//wrong//由于\在字符串中需要转义为\\,所以,如果要匹配/user,正则表达式需要写为varr1=newRegExp('\\/user','g');

所有元字符都需要进行双重转义

另外,还有一些预定义的特殊字符也被称为元字符

元字符描述
.查找单个字符,除了换行和行结束符。
\w查找单词字符。
\W查找非单词字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找NUL字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数xxx规定的字符。
\xdd查找以十六进制数dd规定的字符。
\uxxxx查找以十六进制数xxxx规定的Unicode字符。

有一点需要特别注意:不管一个元字符代表多少种含义,单个元字符始终只匹配单个字符

元字符其实不必刻意花时间去记忆,等了解了全部的正则表达式使用方法之后,自然就知道哪些字符是有特殊含义的,也就知道了哪些时候需要转义了。

下面将陆续介绍正则表达式的使用方法。

Javascript正则表达式详解(二)