2013-10-16 128 views
0

我有一個匹配URL的正則表達式。它不應該匹配以下內容。jQuery正則表達式不驗證

  1. www.yammercom
  2. http://www.yammer
  3. www.yammer..com

正則表達式

/^((((ht|f)tps?:\/\/)*(www\.)?|((ht|f)tps?:\/\/)(www\.)?)*)[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/ 

我在我的正則表達式做什麼錯誤?

試試吧

Rubular demo

+1

你能提供給我們的自由空間RE單線RE真的很難讓我們看...... –

+0

你搜索什麼與此:'([^\ s <> \#%「\,\ {\} \\ | \\\^\ [\]'] +)' – Manolo

回答

1

如果你需要一個正則表達式匹配一個網址,你可以在這裏看看:

http://mathiasbynens.be/demo/url-regex

,你會發現瘋長正則表達式大多數只會通過一半的測試。這應該告訴你爲什麼嘗試在1行正則表達式中驗證它不是一個好主意。

+0

表達式是否正確?找不到更改 – Sam

+0

http://rubular.com/ r/fBGOLqS0jE - 請檢查這個 – Sam

+0

我已經在第一行說明了更改,這裏是正確的:http://rubular.com/r/frCdtvj3Vp – TheOnly92

0

我認爲這將工作:

/^((((ht|f)tps?:\/\/)*(www\.)?|((ht|f)tps?:\/\/)(www\.)?)*)[a-z0-9\-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/ 

你必須花葶的-

+0

http://rubular.com/r/fBGOLqS0jE請檢查這一點。它的錯誤 – Sam

1

後無間距的RE,事實證明,有一些問題... enter image description here

你不需要使用*的匹配協議,而最後的[]對我來說沒有多大意義...(也許你可以更新你的問題。)

我的調整就在這裏。查看在線演示。 http://rubular.com/r/12J7ZRo4Qx

/^(
    (https?|ftp) 
    :\/\/      #protocol 
)?       #is optional 
    (www\.)?      #optional www 
    [-a-z0-9]+     #place - first so it means literally 
    \. 
    [a-z]{2,4}     #trailing hostname 
    (       #match pathname 
    \/       #a slash is required 
    [-a-z0-9]+     #same as hostname 
)* 
/x 

x國旗代表自由間距,如在Perl。

無論如何,匹配url是相當普遍的。我的版本不好,也不符合防彈要求。這只是爲了演示。 如果你需要更多的固體稀土,請檢查這個http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/

本書掌握正則表達式是另一個明確的指導

+0

這個問題也有幫助。 http://stackoverflow.com/questions/1141848/regex-to-match-url –

+0

^((((ht | f)tps?:\/\ /)*(www \。)?|((ht | f ?)TPS:\/\ /)(WWW \))*)[A-Z0-9 \ - \。] + \ [AZ] {2,4} \/?? $。?。它似乎工作。但第三個條件ID不僅滿足 – Sam

+0

@Sam'[a-z0-9 \ - \。]'匹配不需要的。在'..com'中 –