我想知道这种技术被称为什么以及它做了什么。它似乎验证了变量url
上的一些正则表达式。我正在定制另一个人代码:
var url = document.getElementById("editorURL").value;
if(/(file|http).*/.test(url)) {
}
也许某人有一篇文章的链接可以更深入地解释这一点?
答案 0 :(得分:3)
它被称为“验证”(!),它意味着检查“editorURL”是否包含包含单词“file”或“http”的URL。实际上,这并不是一个正则表达式的优点,但总比没有好。一个开始是至少检查文件或http是否位于URL的开头,而不是现在位于其中的任何位置。
/^(file|http).*/.test(url)
这也只是客户端验证,旨在为用户提供有关验证的即时反馈。在服务器端,您应该至少具有相同的规则,甚至可能更严格。服务器端验证用于在错误到达数据库/数据层之前捕获错误,但也用于防止破解者(任何人都可以根据需要解决客户端验证,因此永远不会信任来自客户的数据。)
编辑:我上面的模式意味着(一步一步):
/
这是开头的
正则表达式^
从头开始匹配
文本的开头(url
的开头
变量。这在原始模式中缺失)(
启动子模式(模式内)
模式 - 主要用于
分组)file|http
字面匹配文件或
HTTP 的)
子模式结束.
任何角色*
重复最后一个字符零次或多次(在本例中为“任何字符”)/
正则表达式结束答案 1 :(得分:2)
基本上:if (url matches some_expression) { /* do something * }
答案 2 :(得分:2)
这是一个正则表达式,用于检查url
是以file
还是http
开头,以确保输入的值是指向可以打开的资源的正确URL在浏览器中。
看到它未能检查后续://
部分(例如匹配filexyz
或httphttphttp
),我认为它并不完美。
有关W3Schools的test()
方法的更多信息。
test()方法测试字符串中的匹配。
如果找到匹配项,则此方法返回true,否则返回false。
答案 3 :(得分:2)
/(file|http).*/
这是一个正则表达式,匹配以file或http开头的任何字符串,因此在这种情况下,使用这些协议的任何URL。
regex.test(string)
这是一个测试正则表达式是否与字符串匹配并返回布尔值的函数,因此它们共同构成一个非常基本的url验证方法。
答案 4 :(得分:1)
我发现regular-expressions.info是正则表达式的最佳全能参考。他们的教程从简单到复杂,并且还包含有关各种正则表达式引擎的工作原理的信息。
答案 5 :(得分:0)
尝试检查url是以file://还是http://开头。不过,这是基于一个不正确的假设。作者假设test()
方法只有在匹配整个字符串时才返回true,但如果匹配字符串的任何部分,则返回true。例如,此计算结果为true:
/(file|http).*/.test(' a test file')
你可以摆脱.*
部分,对于任何给定的字符串,它仍会得到相同的结果。
由于写这篇文章的人错了,可能还有其他错误。我建议在剖析其功能后重写一个部分。与对错误代码进行微小更改相比,它将更加令人沮丧。祝你好运!