嘿伙计们我的正则表达式出现错误需要修复
当我在网址中点击..时,我得到一个匹配,我不应该
这是正则表达式
~\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)
想出来,我的排斥需要在我的回顾背后
~\b(?::url|:\surl)\s*\(\s*(["\']?+)(?:(?!\.\./))\K(?:/(?!/)|(?=[\s>]|\1))~i