RegExp正则表达式(三)–js中正则表达式的定义
在js中,RegExp正则表达式的定义有两种方式:一种是普通方式,另一种是构造函数方式。无论是那种定义正则表达式的方式,它们都会返回RegExp对象。
普通方式定义正则表达式的格式
语法:
var 变量名 = /正则表达式/附加参数
- 1
附加参数是用来扩展表达式含义的,目前有三种附加参数。分别是:
g:表达式进行全局匹配
i:匹配时不区分英文的大小写
m:可以进行多行匹配
其中全局匹配(g)是指,匹配字符串时,直到所有字符串全部查找完成才会停止匹配。
而非全局匹配是指,匹配字符串时,有一处匹配成功或查找至字符串的结尾,其中只要有一个条件满足时,就停止匹配。
m表明表达式可以进行多行匹配。但这个参数只有当表达式中使用”^”(以……开头)或”$”(以……结尾)特殊字符时才会起作用,如果表达式中没有”^”或”$”特殊字符时,加不加m参数都不影响匹配的结果。
这三种参数可以随意组合,也可以不加附加参数。默认的定义正则表达式(即不加附加参数)是非全局匹配,区分大小写,单行匹配。
举个栗子
如:
//启用全局匹配,区分大小写,多行匹配)
var reg = /\w/gim;
- 1
- 2
//启用默认的附加参数
var reg = /\w/;
- 1
- 2
有如下文本:
acbbfff
abccff
如果采用/^a./g,则匹配结果为”ac”;
如果采用/^a./gm,则匹配结果为”ac”和”ab”。
如果采用/^a./m,则匹配结果为”ac”
如果采用/a./gm,则匹配结果为”ac”和”ab”
如果采用/a./g,则匹配结果为”ac”和”ab”
- 1
- 2
- 3
- 4
- 5
构造函数方式定义正则表达式的格式
语法:
var 变量名 = new RegExp(“正则表达式”,”附加参数”);
- 1
或
var 变量名 = new RegExp(/正则表达式/附加参数);
- 1
使用方式和普通方式的一样。
如:
var reg = new RegExp(“\w*”,”gim”);
- 1
var reg = new RegExp(/\w*/gim);
- 1
总结
以上两种定义正则表达式的区别:
普通的定义方式,表达式必须是一个常量字符串
如:
var reg = /a./gim;
- 1
而构造函数的定义方式,表达式可以是常量,也可以是变量
如:
var t1 = “a.”;
var reg1 = new RegExp(t1,”gim”); //表达式是变量
var t2 = “a\\w”;
var reg2 = new RegExp(t2,”gim”); //表达式是变量
- 1
- 2
- 3
- 4
或
var reg = new RegExp(/a./gim); //表达式是常量
- 1
附注
-
无论是普通的正则表达式定义还是构造函数的正则表达式定义,其返回值都是RegExp对象。
-
如果表达式是变量字符串时,\w,\d这一类匹配字符集的特殊字符,要写成”\\w”,”\\d”这种格式。原因是,字符串在解析时会把”\”符号解析成转义字符,如果要使其解析成”\”字符,就要写成”\\”