美文网首页
$1...$9 属性 (RegExp) (JavaScript)

$1...$9 属性 (RegExp) (JavaScript)

作者: 林键燃 | 来源:发表于2018-09-30 11:16 被阅读8次

    RegExp.$1 - $9

    非标准 $1, $ 2, $3, $4, $5, $6, $7, $8, $9 属性是包含括号子串匹配的正则表达式的静态和只读属性。(该特性是非标准的,请尽量不要在生产环境中使用它!)

    语法

    // RegExp.$_,与正则表达式匹配的完整字符串。
    RegExp.$_
    // RegExp.$n,(n为1-9之间的数值)指的是与正则表达式匹配的第n个子匹配(以括号为标志)字符串
    RegExp.$1
    RegExp.$2
    RegExp.$3
    RegExp.$4
    RegExp.$5
    RegExp.$6
    RegExp.$7
    RegExp.$8
    RegExp.$9
    

    描述

    • $1, ..., $9 属性是静态的, 他不是独立的的正则表达式属性. 所以, 我们总是像这样子使用他们RegExp.$1, ..., RegExp.$9.
    • 属性的值是只读的而且只有在正确匹配的情况下才会改变.
    • 括号匹配项是无限的, 但是RegExp对象能捕获的只有九个. 你可以通过返回一个数组索引来取得所有的括号匹配项.
    • 这些属性可以在String.replace 方法中替换字符串. 在这种情况下,不用在前面加上RegExp。下面的例子将详细说明. 当正则表达式中不包含括号, 脚本中的 $n's 就是字面上的意思 (当n是正整数).

    例子

    使用replace()去匹配一个 first last 格式的 name String 实例,然后输出 last first 格式。在替换文本中,用 $1$2 表示正则表达式中括号匹配项的结果。

    let regExp = /(\w+)\s(\w+)/
    let str = 'Jianran Lin'
    str.replace(regExp, '$2 '+ '$1') // "Lin Jianran"
    console.log(RegExp.$1) // "Jianran"
    console.log(RegExp.$2) // "Lin"
    

    技术指标

    非标准,不属于当前的任何规范

    相关文章

      网友评论

          本文标题:$1...$9 属性 (RegExp) (JavaScript)

          本文链接:https://www.haomeiwen.com/subject/tixwoftx.html