2011-03-09 40 views

回答

0

有時,最簡單的答案是正確的:

function canonicalise(url) { 
    if (!url.match(/^[a-z][\w-]+:/i)) { 
    url = 'http://' + url 
    } 
    return url 
} 
1

嘗試這一個:([a-z0-9_-]+\.)+[a-z]{2,4}/[^ ]*組成:

  • 至少一個時間的主機或域名(包含字母數字字符下劃線和短劃線)
  • 然後一個TLD是至少2個和最多4字符,並且只包含字母
  • 然後斜線字符
  • 後跟零個或任意數量的非空格字符

這不是很嚴格,但可能做留言板等工作。

+0

我已經有一個URL匹配的正則表達式。我想要一個規範的方法來將bit.ly/foo''變成http:// bit.ly/foo'',但是例如''mailto:foo @ bar.com''留作'mailto:foo @ bar.com''。 – nornagon 2011-03-20 01:22:27

+0

這件事情就是這樣。請注意,您必須有一個斜槓字符,該字符對於「bit.ly/foo」是正確的,但將「mailto:foo @ bar.com」完好無損。 – vbence 2011-03-20 08:42:33

+0

爲什麼downvote? :o – vbence 2011-03-20 09:15:00

0

這個工作對我來說:

/((?<=[^a-zA-Z0-9])(?:https?\:\/\/|[a-zA-Z0-9]{1,}\.{1}|\b)(?:\w{1,}\.{1}){1,5}(?:com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil|iq|io|ac|ly|sm){1}(?:\/[a-zA-Z0-9]{1,})*)/mg 

https://regex101.com/r/fO6mX3/2