正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法。
1. 正则表达式的定义
正则表达式有两种方法定义:
- 一种是使用正则表达式直接量,将其包含在一对斜杠(/)之间的字符。
var pattern = /s$/;
- 另一种是使用RegExp()构造函数。
var pattern = new RegExp('s');
上面两种方法是等价的,用来匹配所有以字母“s”结尾的字符串。
正则表达式的模式规则是由一个字符序列组成的,所有字母和数字都是按照字面含义进行匹配的。
2 .字符类
将直接量字符单独放进方括号就组成了字符类(character class)。一个字符类可以匹配它所包含的任意字符。比如:/[abc]/就和字母“a”、“b”、“c”中的任意一个都匹配。
我们还可以通过“^”符号来定义否定字符类,它匹配所有不包含括号内的字符。定义否定字符类时,将一个“^”符号作为左方括号内的第一个字符。比如: /[^abc]/ 匹配的是“a”、“b”、“c”之外的所有字符。’
字符类还可以使用连字符来表示字符范围。比如要匹配拉丁字母表中的小写字母,可以使用 /[a-z]/ ,要匹配拉丁字母表中的任何字母和数字,则使用 /[a-zA-Z0-9]/ 。
注意:字符类的连字符必须在头尾两个字符中间,才有特殊含义,否则就是字面含义。比如,[-9]就表示匹配连字符和9,而不是匹配0到9。
3.指定匹配位置
除了匹配字符串中的字符外,有些正则表达式的元素匹配的是字符之间的位置,亦可称为正则表达式的锚。比如:\b匹配一个单词的边界,即位于\w(ASCII单词)字符和\W(非ASCII单词)之间的边界,或位于一个ASCII单词与字符串的开始或结尾之间的边界。