摘要:定义在中,定义一个正则表达式有两种方式,一种是直接量,另一种是使用构造函数。元字符在正则表达式的模式中,有一些字符是有特殊含义的,被称为元字符,如果要匹配元字符,则必须对其进行转义。正则表达式详解二
简介
先来一段介绍:
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
简单说就是:
它是对字符串执行模式匹配的强大工具。
Javascript中的正则表达式相较于其他语言来说实现的并不完整,但仍然是十分强大的,能够帮助我们完成绝大多数模式匹配任务。下面将一步一步详细介绍。
定义在Javascript中,定义一个正则表达式有两种方式,一种是直接量,另一种是使用构造函数。
直接量Javascript可以使用类似Perl的语法定义一个正则表达式
var r = /pattern/flags;
其中pattern是任何简单或复杂的正则表达式,flags是用以表达正则表达式行为的一个或者多个标识。
flagsg 表示全局(global)模式,即模式将被应用于所有字符串
i 表示不区分大小写
m 多行模式
来看几个例子
var r1 = /at/g; // 匹配字符串中所有"at"的实例 var r2 = /.ho/gi; // 匹配以"ho"结尾的三个字符的组合,不区分大小写使用构造函数
Javascript中正则表达式的构造函数为RegExp,即Regular Expression的缩写,它接收两个参数,第一个为要匹配的字符串模式,另一个是可选的标识位。
如:
var r = new RegExp("hello", "g"); // 匹配字符串中所有的"hello"实例
有一点一定要注意,第一个参数是一个字符串,而不是正则表达式的直接量。
元字符在正则表达式的模式中,有一些字符是有特殊含义的,被称为元字符,如果要匹配元字符,则必须对其进行转义。
这些元字符分别是:
( [ { ^ $ | ) ? * + . ] }
例如:
// 如果要匹配"/user/name"这个字符串,正则表达式需要这样 var r1 = //user/name/; var r2 = /.ho/; // 匹配".ho"这个字符串关于使用构造函数定义
如果使用构造函数定义正则表达式,由于构造函数的第一个参数必须是一个字符串,在匹配元字符时,这将会导致双重转义。
例如:
var r1 = new RegExp("/user", "g"); // wrong // 由于在字符串中需要转义为,所以,如果要匹配/user,正则表达式需要写为 var r1 = new RegExp("/user", "g");
所有元字符都需要进行双重转义
另外,还有一些预定义的特殊字符也被称为元字符
元字符 | 描述 |
---|---|
. | 查找单个字符,除了换行和行结束符。 |
w | 查找单词字符。 |
W | 查找非单词字符。 |
d | 查找数字。 |
D | 查找非数字字符。 |
s | 查找空白字符。 |
S | 查找非空白字符。 |
匹配单词边界。 | |
B | 匹配非单词边界。 |