获取正则表达式的结果在if语句

获取正则表达式的结果在if语句

问题描述:

我已经看到了使用后的人做到以下几点:获取正则表达式的结果在if语句

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之间的区别?

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

漂亮的图,和漂亮的链接(: 感谢 – peirix 2009-06-15 10:53:24

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

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