Javascript字符串变量不加引号
Javascript string variable unquoted?
我正在使用QuickBlox JavaScript API。查看他们的代码,我发现了这一行:
var URL_REGEXP = /'b((?:https?:'/'/|www'd{0,3}[.]|[a-z0-9.'-]+[.][a-z]{2,4}'/)(?:[^'s()<>]+|'(([^'s()<>]+|('([^'s()<>]+')))*'))+(?:'(([^'s()<>]+|('([^'s()<>]+')))*')|[^'s`!()'[']{};:'".,<>?«»“”‘’]))/gi;
似乎声明了一个正则表达式模式的字符串变量。然后它继续使用这个变量,这样:
return str.replace(URL_REGEXP, function(match) {
url = (/^[a-z]+:/i).test(match) ? match : 'http://' + match;
url_text = match;
return '<a href="' + escapeHTML(url) + '" target="_blank">' + escapeHTML(url_text) + '</a>';
});
我想知道这怎么可能?在第一行声明的var应该是一个字符串,但是没有引号。这不应该是语法错误吗?
我在浏览器上测试了这段代码,它可以工作!这意味着我还需要学习一些东西……有人能解释一下这个变量是如何声明的吗?
此外,我试图在我朋友的计算机上运行相同的代码,Chrome调试器在变量声明行(意外令牌'/')上抛出语法错误。我使用Chrome版本36.0.1985.143 m,我的朋友正在使用同样的东西,但在我的电脑上,它一切正常,在我的朋友的电脑上,代码停止在第一个变量声明,因为"语法错误"。
是否存在一些不同的设置?
如有任何帮助,不胜感激。
谢谢你的快速回答。我有PHP背景,所以我认为所有的正则表达式都必须初始化为字符串:p
谁能重现我在我朋友的电脑上得到的语法错误?(禁用所有扩展后仍然会发生)。我也不能复制它,这就是让我沮丧的地方。
更新2
我已经测试和我的朋友的电脑,并通过源代码查看。它似乎是由于一些编码问题(我不确定什么)。正则表达式如下所示:
var URL_REGEXP = /'b((?:https?:'/'/|www'd{0,3}[.]|[a-z0-9.'-]+[.][a-z]{2,4}'/)(?:[^'s()<>]+|'(([^'s()<>]+|('([^'s()<>]+')))*'))+(?:'(([^'s()<>]+|('([^'s()<>]+')))*')|[^'s`!()'[']{};:'".,<>?芦禄鈥溾€濃€樷€橾))/gi;
(代码末尾的字符似乎是一些随机的中文字符)。
如何更改编码以匹配他的浏览器/系统?(他使用的是Windows 7简体系统)
不是String变量。正则表达式
呼叫var varname = /pattern/flags;
有效调用var varname = new RegExp("pattern", "flags");
您可以在任何支持JavaScript控制台的浏览器中执行以下命令:
>>> var regex = /(?:['w-]+'.)+['w-]+/i
>>> regex.exec("google.com")
... ["google.com"]
>>> regex.exec("www.google.com")
... ["www.google.com"]
>>> regex.exec("ftp://ftp.google.com")
... ["ftp.google.com"]
>>> regex.exec("http://www.google.com")
谁能重现我在我朋友的电脑上得到的语法错误?(禁用所有扩展后仍然会发生)。我也不能复制它,这就是让我沮丧的地方。
根据RegExp - JavaScript文档:
Regex字面值在ECMAScript第1版中出现,在JavaScript 1.1中实现。使用更新后的浏览器
不,它不应该是语法错误。在Javascript中,RegExp
对象不是字符串,它们是一个不同的对象类。/.../modifiers
是RegExp
文字的语法。
我无法解释你在你朋友的电脑上出现的语法错误,在我看来它很好。我把它粘贴到Javascript控制台,它是好的。
- javascript中未完全加载变量
- Javascript - 如何从文件加载变量并每 3 秒刷新一次
- 在不同的 Require.js 模块中存储和加载变量
- 保存和加载变量
- 简单的web服务器示例-为什么我必须将属性名称加引号
- 如何设置<A>在实时HTMLDocument中标记,并在其周围加引号
- 来自动态数据的JavaScript字符串声明,带有未加引号
- Javascript字符串变量不加引号
- 反转一个字符串,为什么要加引号
- 试着给这个加10.y变量,但返回NaN
- Jquery javascript加载变量作用域
- 当设置为JavaScript对象的属性名时,保留字是否需要加引号
- 为什么变量在一种情况下用单引号发送,而在另一种情况下不加引号
- Javascript TRUE未定义或未加引号
- 尝试加载变量到Angular指令
- 从URL加载变量,仅适用于数字
- JQuery变量值加引号
- jQuery加载变量而不是元素id
- 从URL加载变量
- 为什么ng repeat不加载变量