你到底想说什么呢?有-的属于2?没有-的属于1?
是的^(.*)([^\-0-9]+)\.html$
这样写不通过语法报错了

解决方案 »

  1.   

    /^[A-Za-z\d]+\.\d\.html$/;
    匹配
    test1.1.html
      

  2.   

    我的意思是除了第二^(.*)-([0-9]+)\.html$
    以外的都到第一正则/^[A-Za-z\d]+\.\d\.html$/;
    匹配
    test1.1.html
    虽配置test1.1.html但是将原来的test.html已经不能生效,而且原来还可以test-jdf-test.html等
      

  3.   

    $s1 = "test-test-f.html"; //or 
    //$s1 = "test111.1.html"; //or
    //$s1 = "test.html";$s2 = "test-1000.html";
    if(preg_match("/.*?-?[^\d]+/",$s1))
    {
    echo "Match 1 \n";
    }
    if(preg_match("/.*?-[\d]+/",$s2))
    {
    echo "Match 2 \n";
    }
      

  4.   

    preg_match("/.*?-?[^\d]+/",$s1) 连s2也匹配了
      

  5.   

    $s1 = "test-test-f.html"; //or 
    //$s1 = "test111.1.html"; //or
    //$s1 = "test.html";$s2 = "test-1000.html";
    if(preg_match("/.*?-?[^\d]+\.html/",$s2))
    {
    echo "Match 1 \n";
    }
    if(preg_match("/.*?-[\d]+\.html/",$s2))
    {
    echo "Match 2 \n";
    }
      

  6.   

    上述的当
    $s1 = "test111.1.html";

    $s1 = "test111.html";
    preg_match("/.*?-?[^\d]+\.html/",$s1)通不过
      

  7.   

    1.test.html
    2.test-10000.html请给出1,2的规律规则来。
      

  8.   

    格式1为 文件名.html
    格式2为 文件名-数字.html两者的区别在格式2 多了一个"-数字"其中文件名是合法的文件格式可以是test2.html test-uer-ss.html test-usb1.1.html
      

  9.   

    <?php
    $s2="wwww-10.html";
    //$s2="wwww-ww.html";
    if(preg_match("/(.*)-[\d]+\.html/",$s2))
    {
        echo "是2类型";
    }else
    {
    echo "不是2";
    }
    ?>
      

  10.   

    不能用else,必须要写两个正则表达式
      

  11.   

    现在1的正则是这样写
    ^(?!.*-\d+\.html$).*\.html$
      

  12.   

    <?php
    $re="/^(.+)\.html$/";
    $s="test1.1.html";
    preg_match($re,$s,$out);
    echo $out[0];
    ?>---------- 程序调试结果 ----------
    test1.1.html
    Output completed (0 sec consumed) - Normal Termination
      

  13.   

    还是不行呀
    //$s1 = "test-test-f.html"; //or 
    $s1 = "test111.1.html"; //or
    //$s1 = "test.html";$s2 = "test-1000.html";
    if(preg_match("/^(.+)\.html$/",$s2))
    {
    echo "Match 1 \n";
    }
    if(preg_match("/.*?-[\d]+\.html/",$s2))
    {
    echo "Match 2 \n";
    }必须要能判断下列规则
    格式1为 文件名.html
    格式2为 文件名-数字.html两者的区别在格式2 多了一个"-数字"其中文件名是合法的文件格式可以是test2.html test-uer-ss.html test-usb1.1.html
      

  14.   

    test-22-ss.html属于哪种格式?
    test-ss-22.html又属于哪种格式?
    你把需求描述清楚一点吧.
      

  15.   

    test-22-ss.html属于哪种格式? 属第一种
    test-ss-22.html又属于哪种格式? 属第二种
      

  16.   

    关键在于要去匹配包含数字也包含其他字符的为第一种
    包含数字不包含其他字符的为第二种。我还没想到怎么处理才能判断出第一种情况而非第二种情况。不过有个变通的方法:<?php
    $str = 'test2.html test-uer-ss.html test-usb1.1.html test-333222.html';
    preg_match_all("/[^\s]*?-[\d]*?.html/isU",$str,$arrStr1);
    preg_match_all("/[^\s]*?.html/isU",$str,$arrStr2);
    ?>然后从$arrStr2中排除$arrStr1的情况。
      

  17.   

    <script type="text/javascript">
    function num1(s) {
    var p = /^[a-z\d]+((-[a-z\d]+)*(-[a-z]+|(-\d+)))*\.html$/i;
    var j = p.exec(s)? (RegExp.$4? "第二种": "第一种"): "第三种^o^";
    alert(j);
    }
    num1("test-22-ss.html");
    num1("test-ss-22.html");
    num1("test.html");
    num1("test-10000.html");
    num1("不成立");
    </script>
      

  18.   

    格式1为 文件名.html
    格式2为 文件名-数字.html
    两者的区别在格式2 多了一个"-数字"
    如果你这样说的话。那么利用非贪婪特性即可
    <script type="text/javascript">
    function num1(s) {
    //var p = /^[a-z\d]+((-[a-z\d]+)*(-[a-z]+|(-\d+)))*\.html$/i;
    //比较严格的说
    var p = /^[^\\\/\:\*\?\"<>\|\.][^\\\/\:\*\?\"<>\|]+?(-\d+)?\.html$/i;
    var j = p.exec(s)? (RegExp.$1? "第二种": "第一种"): "第三种^o^";
    alert(j);
    }
    num1("test-22-ss.html");
    num1("test-ss-22.html");
    num1("test.html");
    num1("test-10000.html");
    num1("传说中的-WC.html");
    num1("不成立");
    </script>
      

  19.   

    var p = /^[^\\\/\:\*\?\"<>\|]+?(-\d+)?\.html$/i;
    晕。。没仔细看这个
    修改下
      

  20.   

    早就写好,只要一个正向查找,尾数非"-数字.html"的就是第一种.^(?!.*-\d+\.html$).*\.html$“回复楼上的,这个表达式根本通不过”通不过的原因只可能你的语言PHP中有点小区别,注意了解一下有没有特别字符。在JS下绝对可以的。
      

  21.   

    /^[^\\\/\:\*\?\"\<\>\|\.][^\\\/\:\*\?\"\<\>\|]*?(-\d+)?\.html$/i;//(i设置不区分大小写)
    //文件名里不包括\ / : * ? < > |
    //而且文件名的开头也不能为.
    //所以这个式子应该没问题啊。。*?(-\d+)? ,因为第一种后面没-数字所以,*?将匹配所有。如果是第二种则会匹配-\d+,因为*?设置有非贪婪,所以捕获到的$1就有值啦。。
    //即判断$1有无值即可分辨是哪种应该没问题的吧?思路很清楚的啊。^o^多加几个转议呢?
    忽忽,不懂PHP看这个问题晃悠了好几天了
      

  22.   

    muxrwc(王辰)是正则高手,我看你写的正则好几天了.谢谢!