js正则表达式的属性 - part3
我是Kaiqisan,是一个会经常口胡的标准普通话玩家,今天来从比较深层的角度解析正则表达式,虽然吧,这里的东西在正常的编写代码中很少用到,但是,我还是要将,万一用到了呢?万一呢!?
一般表达式的属性
自从一个正则表达式被创建之后就一直拥有的属性
global
: 是否设置了全局搜索
let reg = /app/g
console.log(reg.global) // true
ignoreCase
: 是否设置了不区分大小写
let reg = /app/i
console.log(reg.ignoreCase) // true
multiline
: 是否设置了换行搜索
let reg = /app/m
console.log(reg.multiline) // true
source
: 正则表达式的字符串表达。(不包含后面的后缀)
let reg = / app /
console.log(reg.source); // 输出为 ' app '
lastIndex
: 表示在搜索中找到的下一个匹配元素的字符位置的下一位(以下标为准),一般与exec
方法配合使用
let reg = /add/g
let str = "addaddaddaddadd"
reg.exec(str)
console.log(reg.lastIndex); // 3 第一个"add"的下一位"a"的下标为3
reg.exec(str)
console.log(reg.lastIndex); // 6 第二个"add"的下一位"a"的下标为6
构造函数属性
爸爸级别的人物,它与在场的所有的表达式挂钩
input
: 最近一次要匹配的字符串,等同于 $_
leftContext
: 当前匹配中的字符串中目前符合匹配条件的关键字的前面的所有字符,等同于 $`
rightContext
: 当前匹配中的字符串中目前符合匹配条件的关键字的后面的所有字符,等同于 $'
lastMatch
: 当前匹配的字符串中目前的匹配项,等同于 $&
lastParen
: 最近一次匹配的捕获组,等同于 $+
multiline
: 是否所有表达式都使用多行模式。等同于 $*
let str = 'hello world and you'
let reg = /(wo)(r)(ld)/
reg.test(str)
console.log(RegExp.input) // hello world and you
console.log(RegExp.leftContext) // hello
console.log(RegExp.rightContext) // and you
console.log(RegExp.lastMatch) // world
console.log(RegExp.lastParen) // ld
console.log(RegExp.multiline) // undfined
console.log(RegExp.$_) //=input
console.log(RegExp['$`']) //=leftContext
console.log(RegExp['$\'']) //=rightContext
console.log(RegExp['$&']) //=lastMatch
console.log(RegExp['$+']) //=lastParen
console.log(RegExp['$*']) //=multiline
总结
虽然可能说不上这个方法有多么冷门,但它足够细节。