javascript - 谁能解释一下这个 JavaScript 语法(句法)?

标签 javascript regex grammar

我正在 here 读取一个 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 文档中找不到这个语法,但它有点像 < strong>Ruby 的正则表达式语法。谁能解释一下?非常感谢。

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

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

但是我在哪里可以找到这种语法的文档呢?就连著名的JavaScript the definitive guide一书也没有提到RegExp可以这样使用。

最佳答案

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

RegExp["$1"] 是正则表达式组 1,即

(\d+.\d+)/MSIE (\d+.\d+);/

例如

  • 6.0 MSIE 6.0
  • 20091126Firefox/20091126
  • 0.2.153.1Chrome/0.2.153.1

更新:

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

以上代码的意思是,如果字符串中有数字,将其提取出来并解析为Integer

关于javascript - 谁能解释一下这个 JavaScript 语法(句法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2400151/

相关文章:

r - R是否存在现有的ANTLR或IRONY语法?

javascript - 如何设置复选框按钮的样式使其看起来像线段

javascript - 简单的 Google 脚本不起作用

javascript - jslint 显示未转义 '-' 但我的正则表达式是正确的

parsing - 如何在为 RE 构建语法树时处理隐式 'cat' 运算符(使用堆栈评估)

r - R 中的有效符号(标识符)由什么构成

javascript - 在字符串和 ArrayBuffers 之间转换

javascript - 当另一个项目添加到数组时从数组中删除项目

java - 检查字符串中给定字符出现的次数

python - 如何找到匹配项并使用 RegEx 更新它?