RegExp正则表达式(三)–js中正则表达式的定义

时间:2023-03-09 18:59:47
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”这种格式。原因是,字符串在解析时会把”\”符号解析成转义字符,如果要使其解析成”\”字符,就要写成”\\”