在if语句中使用后获取RegExp结果

时间:2009-06-15 10:16:04

标签: javascript regex

我见过人们做了以下事情:

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

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

作为旁注:

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

$1$2之间有什么区别?

2 个答案:

答案 0 :(得分:4)

  

$ 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)

答案 1 :(得分:0)

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

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