功能:if(/(file | http)。* /。test(url)){}

时间:2010-06-08 19:32:43

标签: javascript regex

我想知道这种技术被称为什么以及它做了什么。它似乎验证了变量url上的一些正则表达式。我正在定制另一个人代码:

var url = document.getElementById("editorURL").value;   
if(/(file|http).*/.test(url)) {

}

也许某人有一篇文章的链接可以更深入地解释这一点?

6 个答案:

答案 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 * }

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

答案 2 :(得分:2)

这是一个正则表达式,用于检查url是以file还是http开头,以确保输入的值是指向可以打开的资源的正确URL在浏览器中。

看到它未能检查后续://部分(例如匹配filexyzhttphttphttp),我认为它并不完美。

有关W3Schoolstest()方法的更多信息。

  

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')

你可以摆脱.*部分,对于任何给定的字符串,它仍会得到相同的结果。

由于写这篇文章的人错了,可能还有其他错误。我建议在剖析其功能后重写一个部分。与对错误代码进行微小更改相比,它将更加令人沮丧。祝你好运!