var teststr = "c:\file\attachment\201208\test.rar(文件说明)sdsdsdd";var testend = teststr.match(/\w+(?=\.w+\()w+/);//我这样写不对,值为null,我要的值为test.rar或rar文件扩展名之后为(字符,这个是不变的,该字符串有且只有一个文件名,如果用正则找出其扩展名呢?
对正则比较熟的大虾,指点下吧,谢了

解决方案 »

  1.   

        var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)sdsdsdd";//你这里的路径写错了
        var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i); 
        alert(testend.join('\n'))
      

  2.   

    sdsdsdd这一段时随机的吧,这就难找了
      

  3.   

    好像也不对啊
     var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i); 
    这个求出的值为:test.rar(文件说明),test.rar(文件说明)
    我要的是test.rar或rar
    为了减小复杂性,sdsdsdd这些字符去掉吧,即:
    var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)
      

  4.   

    var teststr = "c:\file\attachment\201208\test.rar(文件说明)";(文件说明) 这是什么?就是这么几个字,还是固定的有括号括起来的一段说明?
      

  5.   

    后面跟的(文件说明)中,这个“(”是真实存在的是吧??如果是的话,非批量的话:
    alert(teststr.split('\\')[teststr.split('\\').length-1].split('(')[0])
      

  6.   


    我这里测试对的啊。。输出
    test.rar
    test
    .rar你是copy我的代码测试的没有。
      

  7.   

    刚没拷这个测试代码,我试了下,alert(testend)是输出:test.rar,test,.rar ,这也不是我想要的结果啊,我只要testend=test.rar就行了或者另写一个,testend=rar就行了。补充下,我刚看了下我本机的实例,文件说明里边,有文件大小,如100.5K之类的,即有个.,这好像对正则表达式,有影响吧。我重新再改下吧:
    var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明100.5K)sdsdsdd";
    var testend1 = teststr.match(...);//这个要取到值test.rar
    var testend2 = teststr.match(...);//这个要取到值rar就要一步到位啊,如果分步的话,我还不如不用正则了,直接用indexof等之类的来取了
      

  8.   

    //获取到test.rar
    var filename=teststr.split('\\')[teststr.split('\\').length-1].split('(')[0]
    //获取到文件扩展名 rar
    var extension=filename.split('.')[1]
      

  9.   

    var testArr=teststr.split(.);
    var typeNameStr=testArr[testArr.length-1];
    var typeName=typeNameStr.substring(0,typeNameStr.length-13);或
    var testArr=teststr.split(.);
    var typeNameStr=testArr[testArr.length-1];
    var typeName=typeNameStr.split('(')[0];不需要正则,直接拆分截取字符串貌似就可以了
      

  10.   

    得数组不更加好?想要文件名,完整文件名,扩展名都行。。    var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)sdsdsdd"; //你这里的路径写错了
        var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i);//数组
        alert(testend.join('\n'))
        testend = teststr.match(/[^\\]+\.[^\(]+/i);//直接完整文件名的
        alert(testend)