正则表达式的基本语法:
pattern(模式)可以是由字符类、限定符、分组、向前查找以及反向引用。flags(标识符)取值为:i(不区分大小写),g(全局匹配),m(多行匹配),同一个正则表达式可以带有一个或多个flags。
创建正则表达式
字面量创建
|
|
RegExp构造函数创建
RegExp构造函数接收两个参数,第一个参数是要匹配的字符串模式,第二个是可选的标识符字符串。
两种创建方式的比较:
在ECMAScript3中,字面量创建和RegExp对象创建区别是:字面量创建始终会共享同一个RegExp实例,而构造函数创建的每一个RegExp实例都是一个新实例
ECMAScript5明确规定:使用正则表达式字面量必须像直接调用RegExp构造函数一样,每次都创建新的RegExp实例。IE9+、Firefox 4+和Chrome都做出了修改。
正则表达式中的元字符必须转义。元字符有:
例如:
RegExp实例的属性和方法
RegExp实例属性
|
|
字符类匹配
|
|
重复字符匹配
|
|
匹配特定数字
|
|
方法
exec()方法
exec()方法为模式的捕获组而设计的,该方法接收一个参数,即要匹配的字符串,该方法返回一个包含捕获组的数组Array,如果没有捕获组匹配返回null。返回的数组Array中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配到的字符串。数组Array中还有两个参数input(返回要匹配的字符串),index(返回匹配项在字符串中的位置)
模式中的捕获组就是指圆括号中的字符串。
exg:
例子中,模式中包含两个捕获组”es”、”d”,即圆括号中的字符串。
test()方法
test()方法检索字符串中指定的值,该方法接收一个参数,如果字符串中含有与模式匹配的文本则返回true,否则返回false。
exg:
如果正则表达式中带有g标识符,则每一次调用test方法和exec方法都从上一次匹配结束位置开始匹配;如果正则表达式中没有g标识符,则每次调用方法都从字符串起始位置开始匹配。
exg:
|
|
|
|
常用的正则校验
|
|