【问题标题】:Getting RegExp result after being used in if-statement在 if 语句中使用后获取 RegExp 结果
【发布时间】:2009-06-15 10:16:04
【问题描述】:

我见过人们这样做:

if (/Firefox\/(\+S)/.test(userAgent)) {
    firefox = RegExp.$1;
}

我知道(有点)正则表达式的作用,但我不确定如何使用 RegExp.$1 访问它。

附带说明:

if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) {
    if (RegExp.$1 == "NT") {
        switch (RegExp.$2) {

$1$2 有什么区别?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    1 美元和 2 美元有什么区别?

    这些是对captured groups 的引用(由正则表达式捕获)

    正则表达式的JavaScript flavor 将组#1 称为$1,将组#2 称为$2。

     Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?
         ^         ^            ^
         |         |            |
         |         group#1      group#2
         |
         ignored group (?: means non-capturing)
    

    【讨论】:

      【解决方案2】:

      RegExp 是一个全局对象,每次运行 RegExp 时都会更新。 RexExp.$1 将包含与最后匹配的模式中的相应括号集匹配的文本。

      旁注:$1 包含括号之间的正则表达式的第一部分,$2 是秒等...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-11
        • 2015-06-24
        相关资源
        最近更新 更多