验证Node.js中的URL

我想验证以下类型的URL:

  • www.google.com
  • http://www.google.com
  • google.com

使用单个正则表达式,可以实现吗?如果是这样,请共享一个JavaScript解决方案。

请注意,我只希望底层协议为HTTP或HTTPS。而且,当前的主要问题是如何使用JavaScript中的一个正则表达式来映射所有这三种模式?不必检查页面是否处于活动状态。如果用户输入的值与上面列出的三种情况中的任何一种匹配,则true如果不匹配,则应返回false

回答:

检查URL是

这有点hack,但是如果我需要这样做,这就是我的处理方式:

解析并提取给定网址中的域/ IP

http:// **drive.google.com

这是在nodejs中执行的操作:

var url = require("url");

var result = url.parse('http://drive.google.com/0/23');

console.log(result.hostname);


ping 提取的域/ ip-由于网络配置,并非所有服务器都会响应ICMP(PING)请求。

var ping = require ("net-ping");

var session = ping.createSession ();

session.pingHost (target, function (error, target) {

if (error)

console.log (target + ": " + error.toString ());

else

console.log (target + ": Alive");

});

  • 查看网包


您可以对该网址执行HTTP HEAD请求,并检查状态码。

var request = require('request');

request({method: 'HEAD', uri:'http://www.google.com'}, function (error, response, body) {

if (!error && response.statusCode == 200) {

console.log(body) // Show the HTML for the Google homepage.

}

})

  • 如果这是一项Web服务,这会有一定的风险(因为您可以触发操作)。
  • 如果网址需要身份验证/重定向,将会更加复杂
  • @JanJůna评论说使用HEAD更好。他是完全正确的。请注意,并非所有Web服务器都支持HEAD方法
  • 查看请求包


有一个包装!

您可以使用现有的称为 nodejs程序包

var validUrl = require('valid-url');

var url = "http://bla.com"

if (validUrl.isUri(url)){

console.log('Looks like an URI');

}

else {

console.log('Not a URI');

}

npm install valid-url --save

以上是 验证Node.js中的URL 的全部内容, 来源链接: utcz.com/qa/413095.html

回到顶部