Jslint改进| url的字符集
Jslint improvements | Character set for url
对于这个原型url检查器。请注意,我所要做的就是在这一点上检查长度。
url: /:'/'/(www'.)?.{1,200}'..{1,1800}/,
Jslint.com给出错误
Insecure '.'
我在这个SO帖子中也有类似的错误,这个否定的字符集。
考虑到这种背景,我认为很明显,jslint不喜欢将全部或大部分作为测试模式。
所以,我只需要更换。域和域后面的部分的有效字符集。
对于域,我可以简化为
[a-zA-Z0-9'-]
域之后的零件的字符集是什么。。。即在foo.com/之后
所以有
//
然后是
www.(optional)
然后是
foo.boo.moo.(note it matched up until the last .) ( this character set is listed above)
然后是
X
如何将所有的X组合在一起:
http://www.foo.X
我不关心提取端口或查询信息,我只需要域后所有内容的字符集,以使正则表达式对每个jslint"安全"。
注意,我只是想逐步改进。
JavaScript,The Good Parts在regex章节中有一个很好的URL检查器,但不是我现在需要的。
您要查找的正则表达式详细信息可以在StackOverflow和RFC 3986 上找到
"主机"的具体字符和表达式为:[a-z0-9'-._~%]+
您可能需要记住,有效的URL可以是IP地址(IPv4、IPv6和IPvFuture)的形式,请查看链接的RegEx以了解详细信息。
您不需要更改正则表达式。
如果问题只是JSLint在抱怨,那么可以禁用该选项。
要在jslint.com上测试它,请在Options部分查找:
[default] . and [^...] in /RegExp/
并点击设置为[true]
。
然后JSLint将接受您的正则表达式。
或者,您可以使用特殊注释来禁用检查。如果您将此测试代码粘贴到JSLint中,它将接受它,而无需手动更改选项设置:
/*jslint regexp: true */
var test = /:'/'/(www'.)?.{1,200}'..{1,1800}/;
以下是此选项的文档:
耐受
.
和[^...]
。in/RegExp/如果在RegExp文字中应允许
.
和[^...]
,则为true
。它们匹配的材料比预期的要多,使攻击者能够混淆应用程序。在安全应用程序中进行验证时,不应使用这些表单。
在正则表达式中使用.
的方式似乎不太可能有任何"不安全"之处,所以我只想继续重写JSLint设置。
(我现在明白了,这是一个非常古老的问题,但也许这个答案对未来的其他人有用。)
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 以角度管理动态URL
- Mathias URL shortener
- 如何有效地将游戏数据存储在URL查询字符串中
- 使用带括号的图像URL作为jQuery的背景
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 传递包含'%的参数'在URL中
- Jslint改进| url的字符集