如何使用JavaScript验证我的URL效率?
My regex成功验证了除如何使用JavaScript验证我的URL效率?,javascript,regex,Javascript,Regex,My regex成功验证了除http://www.google 以下是我在JSFIDLE中的URL验证程序: 它正确验证以下URL: http://www.google.com给出真值 www.google.com给出True http://www.rootsweb.ancestry.com/~mopoc/links.htm给出真值 http://www.给出False ……但不是这个: http://www.google给出真值 在这种情况下,返回true是不正确的。如何验证该案例?我认为您需
http://www.google
以下是我在JSFIDLE中的URL验证程序:
它正确验证以下URL:
http://www.google.com
给出真值
www.google.com
给出True
http://www.rootsweb.ancestry.com/~mopoc/links.htm
给出真值
http://www.
给出False
……但不是这个:
http://www.google
给出真值
在这种情况下,返回true是不正确的。如何验证该案例?我认为您需要简化这一过程。有很多URL验证正则表达式,但作为练习,我将仔细思考构建一个正则表达式的过程
/((http | ftp)s?:\/\/)?
\S+
[\.\/]\S*/
/(((http|ftp)s?:\/\/)|(\S+[\.\/]))\S*[^\s\.]*/
我猜你试图寻找www.google
是因为新的TLD。。。事实上,这样的URL可能看起来像google
,因此任何单词都可能是URL。试图找到一个与有效URL匹配的“一网打尽”正则表达式是不可能的,所以最好只使用上面简单的方法
编辑:我在协议部分和非空白部分之间插入了一个|
,然后是点或斜线部分以匹配http://google
如果人们选择这样编写新的URL
编辑2:查看评论了解下一步改进。它确保
google.com
匹配,http://google
匹配,甚至google/
匹配,但不是a.
事实是http://www.google
是URL的有效格式(事实上,随着新的定制TLD的推出,它甚至可能成为一个有效的地址,尽管更可能是http://google
)。如果要检查该地址是否有效,唯一的方法是尝试访问该地址并查看服务器是否响应(或至少在DNS中查找)。我并不想尝试分析如此长而复杂的正则表达式,但我要说,它比像[a-z]\d |-|-|-|-|-|-|-|-|-|
这样的结构要复杂得多,而不是反复使用[a-z\d.\u~-]
。[请看一下这篇文章][1]可能会帮助你…[1]:@Thor84no使用http://www.hyundai而不是http://www.hyundai.com/in/en/main/my friend正确吗?试试看,这可能有助于对我的frnd进行默认更正,但我们无法完全验证。我不确定我是否理解
背后的思想。该条无助于匹配http://google
,至少不像你看起来那样是有意的。据我所知,这样做的主要结果是你有一个短路,几乎可以接受任何东西(根据regexa.
是有效的例子)。@Thor84no,
的想法是它可以接受http://google
,或google.com
,以及结尾处的*
点(而不是+
)是URL可以以斜杠结尾。a.
确实会从网络中溜走。我实际上是想迎合这一点,因为我讨厌电子邮件被解析时在超链接中包含一个句号。我会解决它。