Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能解释一下这个JavaScript语法(语法)吗?_Javascript_Regex_Grammar - Fatal编程技术网

有人能解释一下这个JavaScript语法(语法)吗?

有人能解释一下这个JavaScript语法(语法)吗?,javascript,regex,grammar,Javascript,Regex,Grammar,我正在阅读一个js文件,在这个js文件的最上面,你可以找到以下几行: var gsAgent=navigator.userAgent.toLowerCase(), gsAppVer=navigator.appVersion.toLowerCase(), gsAppName=navigator.appName.toLowerCase(), gbIsOpera=gsAgent.indexOf("opera")>-1, gbIsKHTML=gsAgent.indexOf("khtml")>

我正在阅读一个js文件,在这个js文件的最上面,你可以找到以下几行:

var 
gsAgent=navigator.userAgent.toLowerCase(),
gsAppVer=navigator.appVersion.toLowerCase(),
gsAppName=navigator.appName.toLowerCase(),
gbIsOpera=gsAgent.indexOf("opera")>-1,
gbIsKHTML=gsAgent.indexOf("khtml")>-1
||gsAgent.indexOf("konqueror")>-1||gsAgent.indexOf("applewebkit")>-1,
gbIsSafari=gsAgent.indexOf("applewebkit")>-1,
gbIsIE=(gsAgent.indexOf("compatible")>-1&&!gbIsOpera)
||gsAgent.indexOf("msie")>-1,
gbIsTT=gbIsIE?(gsAppVer.indexOf("tencenttraveler")!=-1?1:0):0,
gbIsFF=gsAgent.indexOf("gecko")>-1&&!gbIsKHTML,
gbIsNS=!gbIsIE&&!gbIsOpera&&!gbIsKHTML&&(gsAgent.indexOf("mozilla")==0)
&&(gsAppName=="netscape"),
gbIsAgentErr=!(gbIsOpera||gbIsKHTML||gbIsSafari||gbIsIE||gbIsTT
||gbIsFF||gbIsNS),
gbIsWin=gsAgent.indexOf("windows")>-1||gsAgent.indexOf("win32")>-1,
gbIsVista=gbIsWin&&(gsAgent.indexOf("nt 6.0")>-1||gsAgent.indexOf("windows vista")>-1),
gbIsWin7=gbIsWin&&gsAgent.indexOf("nt 6.1")>-1,
gbIsMac=gsAgent.indexOf("macintosh")>-1||gsAgent.indexOf("mac os x")>-1,
gbIsLinux=gsAgent.indexOf("linux")>-1,
gbIsAir=gsAgent.indexOf("adobeair")>-1,
gnIEVer=/MSIE (\d+.\d+);/i.test(gsAgent)&&parseFloat(RegExp["$1"]),
gsFFVer=/firefox\/((\d|\.)+)/i.test(gsAgent)&&RegExp["$1"],
gsSafariVer=/version\/((\d|\.)+)/i.test(gsAgent)&&RegExp["$1"],
gsChromeVer=/chrome\/((\d|\.)+)/i.test(gsAgent)&&RegExp["$1"];
现在我的问题是RegExp[“$1”]是什么意思,我在js文档中找不到这种语法,但它有点像Ruby的regex语法。谁能解释一下吗?非常感谢

附言: 谢谢S.Mark,现在我知道我可以这样使用它:

var a="abc23de";
alert(/(\d+)/.test(a)&&parseInt(RegExp["$1"]));

但是在哪里可以找到这种语法的文档?即使是著名的《JavaScript权威指南》一书也没有提到RegExp可以这样使用。

它是一个浏览器用户代理检测脚本和

RegExp[“$1”]
是正则表达式组1,它将

/MSIE(\d+。\d+)中的
(\d+。\d+)
/

比如说

  • MSIE 6.0中的
    6.0
  • Firefox/20091126中的
    20091126
  • 0.2.153.1
    in
    Chrome/0.2.153.1
更新

var a="abc23de";
alert(/(\d+)/.test(a)&&parseInt(RegExp["$1"]));

上面的代码意味着,如果字符串中有数字,则提取这些数字并将其解析为整数

这是一个浏览器用户代理检测脚本,并且

RegExp[“$1”]
是正则表达式组1,它将

/MSIE(\d+。\d+)中的
(\d+。\d+)
/

比如说

  • MSIE 6.0中的
    6.0
  • Firefox/20091126中的
    20091126
  • 0.2.153.1
    in
    Chrome/0.2.153.1
更新

var a="abc23de";
alert(/(\d+)/.test(a)&&parseInt(RegExp["$1"]));

上面的代码意味着,如果字符串中有数字,则提取这些数字并将其解析为整数

MDC站点已关闭,因此我能提供的最好的方法是使用
RegExp
对象。简言之,
$1、$2、$3、$9
RegExp
对象的属性,按上次执行的正则表达式的出现顺序包含匹配项

示例(摘自MSDN):


在您的示例中使用方括号只是访问对象属性的另一种方式-
RegExp.$1
在功能上与
RegExp[“$1”]
(在本例中)相同。这允许您在不使用
match
方法的情况下检索匹配的组。

MDC站点已关闭,因此我能提供的最佳服务是
RegExp
对象。简言之,
$1、$2、$3、$9
RegExp
对象的属性,按上次执行的正则表达式的出现顺序包含匹配项

示例(摘自MSDN):

在您的示例中使用方括号只是访问对象属性的另一种方式-
RegExp.$1
在功能上与
RegExp[“$1”]
(在本例中)相同。这允许您在不使用
match
方法的情况下检索匹配组。

regexp.test()方法使用找到的内容填充全局regexp对象,请参阅

不推荐使用这种方法,最好使用exec()(及其字符串对应项match())

test()方法用找到的内容填充全局regexp对象,请参见

不推荐使用这种方法,最好使用exec()(及其字符串对应项match())

/(\d+)(.+)/.test("123abc");
alert(RegExp["$1"]) // "123"
var matches = /(\d+)(.+)/.exec("123abc");
alert(matches[1]) // "123"