当URL可能包含或不包含HTTP和WWW时,URL的JavaScript正则表达式

时间:2012-01-04 10:29:56

标签: javascript jquery regex

我正在使用JavaScript regex来检查网址。

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

我使用此正则表达式向Twitter发送消息。会发生什么是确保URL包含WWW和/或HTTP。

但问题是如果网址是 Guaridan.com.uk Twitter将其视为网址。

那么如何修改我的正则表达式,它不会检查HTTP或WWW,这意味着如果它存在则不会产生任何影响。

所以它会匹配 My.co.com dummy.com.in

3 个答案:

答案 0 :(得分:1)

如果您只想匹配域名,则必须匹配几乎任何单词加“。”,“_”和“ - ”符号。 一种方法可能至少匹配根域(.com,.net,.us,.co.uk,.es,.fr ......等),但列表将是巨大的。您可能希望匹配任何具有点分隔单词的内容,而不是确定它将是一个域,但您可能会尝试连接到它。

此正则表达式:([\d\w]+?:\/\/)?([\w\d\.\-]+)(\.\w+)(:\d{1,5})?(\/\S*)?

将匹配:

  • group 1 as protocol://(可选)
  • group 2 concat group 3 as domain
  • 第3组是顶级域名
  • group 4 as:port(可选)
  • 第5组作为查询(可选)

答案 1 :(得分:1)

用于www和http URL格式的jQuery正则表达式。

接受 www 以及 http 网址的正则表达式如下:

var pattern = /(?:https?:\/\/)?(?:www\.)?(?:https?:\/\/)?(?:www\.)(?:https?:\/\/)?(?:www\.)?(\/\S*)?/;

接受 www http abc.com 的正则表达式如下:

var pattern = ([\d\w]+?:\/\/)?([\w\d\.\-]+)(\.\w+)(:\d{1,5})?(\/\S*)?

答案 2 :(得分:0)

试试这个...

/^http:\/\/|(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/

它正是人们想要的工作。

带有或不带http://, https://,www