JavaScript类型系统之正则表达式(2)

{n}       匹配n次
{n,m}     匹配至少n次,最多m次
{n,}      匹配至少n次
?         相当于{0,1}
*         相当于{0,}
+         相当于{1,}

位置符号

^        起始符号
$        结束符号
?=       肯定正向环视
?!       否定正向环视

控制符号

[]     候选
|      或 
^      非
-      到

(red|blue|green)       查找任何指定的选项       
[abc]                  查找方括号之间的任何字符
[^abc]                 查找任何不在方括号之间的字符
[0-9]                  查找任何从0到9的数字
[a-z]                  查找任何从小写a到小写z的字符
[A-Z]                  查找任何从大写A到大写Z的字符
[A-z]                  查找任何从大写A到小写z的字符
[adgk]                 查找给定集合内的任何字符
[^adgk]                查找给定集合外的任何字符

$符号

$$         $
$&         匹配整个模式的子字符串(与RegExp.lastMatch的值相同)
$`         匹配子字符串之前的子字符串(与RegExp.leftContext的值相同)
$'         匹配子字符串之后的子字符串(与RegExp.rightContext的值相同)
$n         匹配第n个捕获组的子字符串,其中n等于0-9。$1表示匹配第一个捕获组的子字符串(从第1个算起)
$nn        匹配第nn个捕获组的子字符串,其中nn等于01-99

console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$0'))//$0,$0,$0,$0 console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$1'))//ca,ba,sa,fa console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$2'))//t,t,t,t console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$3'))//$3,$3,$3,$3 console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$$'))//$,$,$,$ console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$&'))//cat,bat,sat,fat console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,'$`'))//,cat,,cat,bat,,cat,bat,sat, console.log('cat,bat,sat,fat'.replace(/(.a)(t)/g,"$'"))//,bat,sat,fat,,sat,fat,,fat,

构造函数属性

  适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。关于这些属性的独特之处在于可以通过两种方式访问它们,即长属性名和短属性名。短属性名大都不是有效的ECMAScript标识符,所以必须通过方括号语法来访问它们

长属性名        短属性名                说明
input             $_                最近一次要匹配的字符串
lastMatch         $&                最近一次的匹配项
lastParen         $+                最近一次匹配的捕获组
leftContext       $`                input字符串中lastMatch之前的文本
multiline         $*                布尔值,表示是否所有表达式都使用多行模式
rightContext      $'                Input字符串中lastMarch之后的文本

  使用这些属性,可以从exec()方法或text()方法执行的操作中提取出更具体的信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgwffg.html