Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数:if(/(文件| http)。*/.test(url)){_Javascript_Regex - Fatal编程技术网

Javascript 函数:if(/(文件| http)。*/.test(url)){

Javascript 函数:if(/(文件| http)。*/.test(url)){,javascript,regex,Javascript,Regex,我想知道这种技术叫什么,它做什么。它似乎正在验证变量url上的某个正则表达式。我正在自定义另一个人代码: var url = document.getElementById("editorURL").value; if(/(file|http).*/.test(url)) { } 也许有人有一篇文章的链接更深入地解释了这一点?本质上是:if(url匹配某个表达式){/*dosomething*} 这是一个正则表达式,用于检查url是否以文件或http开头,以确保输入的值是指向可在浏览器

我想知道这种技术叫什么,它做什么。它似乎正在验证变量
url
上的某个正则表达式。我正在自定义另一个人代码:

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

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

本质上是:
if(url匹配某个表达式){/*dosomething*}


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

鉴于它无法检查后续的
://
部分(例如,将匹配
filexyz
httphttphttp
),我认为它并不完美

有关
test()
方法的更多信息,请访问

test()方法测试字符串中的匹配项

如果该方法找到匹配项,则返回true,否则返回false

我发现这是正则表达式最好的全面参考。他们的教程从简单到复杂,并且还包含了关于正则表达式引擎的各种风格的工作原理的信息

/(file|http).*/ 

这是一个正则表达式,它匹配以文件或http开头的任何字符串,因此在本例中,任何使用这些协议的URL

regex.test(string)
这是一个测试正则表达式是否与字符串匹配并返回布尔值的函数,因此它们一起构成了一个非常基本的url验证方法。

它被称为“验证”(!),用于检查“editorURL”是否包含包含单词“file”或“http”的url。事实上,正则表达式没那么好,但总比没有强。首先,至少要检查文件或http是否位于URL的开头,而不是现在URL中的任何位置

/^(file|http).*/.test(url)
这也是唯一的客户端验证,旨在为用户提供有关验证的即时反馈。在服务器端,您至少应该有相同的规则,甚至可能更严格。服务器端验证用于在错误到达数据库/数据层之前捕获错误,但也用于防止破解(任何人都可以根据自己的意愿绕过客户端验证,因此永远不要信任来自客户端的数据)

编辑:我的上述模式意味着(一步一步):

  • /
    这是 正则表达式模式
  • ^
    从头开始匹配 文本的开头(url的开头) 变量。原始模式中缺少此变量)
  • 启动子模式(模式在 模式-主要用于 分组)
  • 文件| http
    逐字匹配文件或 http
  • 子模式结束
  • 任何字符
  • *
    将最后一个字符重复零次或多次(在本例中为“任意字符”)
  • /
    正则表达式模式的结尾

尝试检查url是以file://还是http://开头。不过,这是基于一个错误的假设。作者假设
test()
方法仅在匹配整个字符串时返回true,但在匹配字符串的任何部分时返回true。例如,其计算结果为true:

/(file|http).*/.test(' a test file')
您可以去掉
*
部分,对于任何给定的字符串,它仍然会得到相同的结果


既然写这篇文章的人弄错了,那么可能还有其他的东西也错了。我建议在剖析了它们的功能之后,重写它们。与对有缺陷的代码进行微小的更改相比,它不会那么令人沮丧。祝你好运

我确实理解if语句,但问题涉及表达式和test()函数。无论如何,谢谢。因此,我们提供了解释regexp对象、其语法和方法的链接。感谢您提供关于进一步改进它的答案和建议:d感谢您对regexp的全面介绍。