2014-01-10 33 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