REGEX需要忽略目录(..)

时间:2014-01-10 23:30:42

标签: regex

嘿伙计们我的正则表达式出现错误需要修复

当我在网址中点击..时,我得到一个匹配,我不应该

这是正则表达式

~\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;

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

1 个答案:

答案 0 :(得分:0)

想出来,我的排斥需要在我的回顾背后

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