您好,我想使用单个reguar表达式验证www.google.com或
http://www.google.com或google.com类型的网址,是否可以实现,如果是这样,请在javascript中共享解决方案.
请注意我只希望底层协议是HTTP或HTTPS morover现在的主要问题是我们如何使用Javascript中的单个正则表达式映射所有这三个模式,它不必检查页面是否处于活动状态,如果用户输入的值与上面列出的三个案例中的任何一个匹配,那么另一方面它应该返回true,如果它没有它应该返回fasle.
请注意我只希望底层协议是HTTP或HTTPS morover现在的主要问题是我们如何使用Javascript中的单个正则表达式映射所有这三个模式,它不必检查页面是否处于活动状态,如果用户输入的值与上面列出的三个案例中的任何一个匹配,那么另一方面它应该返回true,如果它没有它应该返回fasle.
解决方法
检查URL是否有效
这有点像黑客,但如果我需要这样做,这就是我接近它的方式:
第一步
从给定的URL解析并提取域/ ip
http://drive.google.com/0/23 ➡ 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"); });
>查看net-ping包
第3步
您可以对该URL执行HTTP HEAD请求并检查状态代码.
var request = require('request'); request({method: 'HEAD',uri:'http://www.google.com'},response,body) { if (!error && response.statusCode == 200) { console.log(body) // Show the HTML for the Google homepage. } })
>如果这是一个Web服务(因为您可以触发操作),这有点冒险.
>如果url需要身份验证/重定向,会更复杂
>@JanJůna评论说使用HEAD会更好.他完全正确.请注意,并非所有Web服务器都支持HEAD方法
>查看request包装
有一个包!
您可以使用名为validUrl的现有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
如果你还想要一个简单的REGEX
谷歌是你的朋友. check this out