要求/www/之后和.html之前的字符串不包含“/”且不等于“index”。比如/www/article-list.html,/www/之后和.html之前的字符串是article-list,它不包含“/”且不等于“index”,所以匹配。
比如/www/article/list.html,/www/之后和.html之前的字符串是article/list,它包含“/”,所以不匹配。
比如/www/index.html,/www/之后和.html之前的字符串是index,它等于“index”,所以不匹配。我写了几个都不行。。
^/www/(?!index)(((?!/).)*).html$
^/www/[^(?!index)](((?!/).)*).html$
^/www/[^(?!index)(((?!/).)*)].html$
以上的都不行请问这个正则该怎么写?

解决方案 »

  1.   

    echo preg_match("/^\/w{3}\/.*(\/|index)+.*\.html/",$str);
      

  2.   


    echo (preg_match("/^\/w{3}\/.*(\/|index)+.*\.html/",$str) ?  '不符合规则' : '符合规则');
      

  3.   

    2楼误解了,呵呵。
    $str = '/www/index123456.html';
    echo (preg_match("/^\/w{3}\/.*(\/|index)+.*\.html/",$str) ?  '不符合规则' : '符合规则');得到结果是“不符合规则”但是根据要求,index123456不等于index哦,所以应该符合要求才对。
      

  4.   

    $str = '/www/testindex123.html';
    也不对要求是不包含“/”且不等于“index”。所以index是可以包含的。
      

  5.   

    哦~不好意思理解错了!~修改下就行了~~echo (preg_match("/^\/w{3}\/(.*\/.*|index)\.html/",$str) ? '不符合规则' : '符合规则');
    不知道可否满足!回家了,没调试过!