验证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