2014-01-10 72 views
0

嗨我遇到了我的正則表達式,需要加以固定REGEX需要忽略的目錄了(..)

當我打了一個錯誤。在URL,我得到一個比賽,我不應該「T

這裏是正則表達式

~\b(?::url|:\surl)\s*\(\s*(["\']?+)\K(?:/(?!/)|(?=[\s>]|\1))~i 

我認爲這應該是

~\b(?::url|:\surl)\s*\(\s*(["\']?+)\K(?:/(?!/|..)|(?=[\s>]|\1))~i 

,但似乎並沒有工作?

事情應該匹配

background:url('/foo.jpg') repeat-y top center; 
background:url("/foo.jpg") repeat-y top center; 
background:url(/foo.jpg) repeat-y top center; 

background:url('foo.jpg') repeat-y top center; 
background:url("foo.jpg") repeat-y top center; 
background:url(foo.jpg) repeat-y top center; 

background: url('/foo.jpg') repeat-y top center; 
background: url("/foo.jpg") repeat-y top center; 
background: url(/foo.jpg) repeat-y top center; 

不應該匹配,但不會(並執行)

background:url('../foo.jpg') repeat-y top center; 
background:url("../foo.jpg") repeat-y top center; 
background:url(../foo.jpg) repeat-y top center; 

background: url('../foo.jpg') repeat-y top center; 
background: url("../foo.jpg") repeat-y top center; 
background: url(../foo.jpg) repeat-y top center; 

,並使用(?!/|\.\.)似乎仍然匹配

+0

你可以添加它匹配的字符串,但它不應該? –

+0

需要轉義'.' - >'\ .',因爲它是正則表達式中的一個特殊字符。 – nhahtdh

回答

0

想通了,我排除需要在我回頭看後面

~\b(?::url|:\surl)\s*\(\s*(["\']?+)(?:(?!\.\./))\K(?:/(?!/)|(?=[\s>]|\1))~i