2012-01-04 92 views
0

我正在使用将检查URL的JavaScript正则表达式。当URL可能包含或不包含HTTP和WWW时,URL为URL的正则表达式

(?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。

但问题是如果URL是像Guaridan.com.uk Twitter认为它是一个URL。

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

因此,它会匹配像My.co.comdummyKin

+1

如果您使用jQuery,为什么不使用使用jQuery的URL验证例程? – fge 2012-01-04 10:31:57

+0

@fge我不知道这件事。你能举一些例子吗 – Moons 2012-01-04 10:33:09

+0

请看这里:http://docs.jquery.com/Plugins/Validation/Methods/url – fge 2012-01-04 10:37:02

回答

1

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

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

将匹配:

  • 组1为protocol://(可选)
  • 组2的concat组3作为域
  • 组3是顶层域
  • 组4作为端口(可选)
  • 组5作为查询(可选)
1

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

接受WWW以及HTTP下面给定URL正则表达式:

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

接受WWWHTTPabc.com下面给出正则表达式:

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

欢迎来到SO!你能重新格式化你的答案,把正则表达式放到代码中吗?请重新检查错别字。 – Mateng 2012-11-12 05:15:39

+0

它需要你在哪里使用这个正则表达式,只要把自己的代码括号或分号。就像我添加这个正则表达式在我的jqueryvalidation.js作为“url”:{ “regex”:/(?: https?:\ \ /)(?: WWW \)(?: HTTPS:???\/\ /)(?: WWW \)(?: HTTPS:???\/\ /)(?: WWW \) ?(\/\ S *)?/ i, “alertText”:“*无效的网址” } – 2012-11-15 07:42:54

0

试试这个......

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

它的工作人民正在想什么。

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

相关问题