js中,这段路径字符串,如何用正则找出文件名或推展名?

网络科技 2012-08-27 09:16:49
var teststr = "c:\file\attachment\201208\test.rar(文件说明)sdsdsdd";

var testend = teststr.match(/\w+(?=\.w+\()w+/);//我这样写不对,值为null,我要的值为test.rar或rar

文件扩展名之后为(字符,这个是不变的,该字符串有且只有一个文件名,如果用正则找出其扩展名呢?
对正则比较熟的大虾,指点下吧,谢了
...全文
260 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2012-08-27
  • 打赏
  • 举报
回复
得数组不更加好?想要文件名,完整文件名,扩展名都行。。

var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)sdsdsdd"; //你这里的路径写错了
var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i);//数组
alert(testend.join('\n'))
testend = teststr.match(/[^\\]+\.[^\(]+/i);//直接完整文件名的
alert(testend)
未知数 2012-08-27
  • 打赏
  • 举报
回复
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];

不需要正则,直接拆分截取字符串貌似就可以了
网络科技 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

//获取到test.rar
var filename=teststr.split('\\')[teststr.split('\\').length-1].split('(')[0]
//获取到文件扩展名 rar
var extension=filename.split('.')[1]
[/Quote]
这也是一种方式,算是一步到位吧,可行。
不知道正则有没办法一步到位了
泡泡鱼_ 2012-08-27
  • 打赏
  • 举报
回复
//获取到test.rar
var filename=teststr.split('\\')[teststr.split('\\').length-1].split('(')[0]
//获取到文件扩展名 rar
var extension=filename.split('.')[1]
网络科技 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 3 楼 的回复:

引用 1 楼 的回复:

JScript code
var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)sdsdsdd";//你这里的路径写错了
var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i);
alert(testend.join(……
[/Quote]
刚没拷这个测试代码,我试了下,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等之类的来取了
Go 旅城通票 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

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

好像也不对啊……
[/Quote]

我这里测试对的啊。。输出
test.rar
test
.rar

你是copy我的代码测试的没有。
泡泡鱼_ 2012-08-27
  • 打赏
  • 举报
回复
后面跟的(文件说明)中,这个“(”是真实存在的是吧??

如果是的话,非批量的话:
alert(teststr.split('\\')[teststr.split('\\').length-1].split('(')[0])
网络科技 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

var teststr = "c:\file\attachment\201208\test.rar(文件说明)";

(文件说明) 这是什么?就是这么几个字,还是固定的有括号括起来的一段说明?
[/Quote]
括号里边,你就看成是文件说明这几个普通的字符串吧,或其它中文字符。(反正不影响正则取值的就行)
泡泡鱼_ 2012-08-27
  • 打赏
  • 举报
回复
var teststr = "c:\file\attachment\201208\test.rar(文件说明)";

(文件说明) 这是什么?就是这么几个字,还是固定的有括号括起来的一段说明?
网络科技 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

sdsdsdd这一段时随机的吧,这就难找了
[/Quote]
这些不考虑吧,并且字符串中,只有唯一的(与.字符
网络科技 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

JScript code
var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)sdsdsdd";//你这里的路径写错了
var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i);
alert(testend.join('\n'))
[/Quote]
好像也不对啊
var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i);
这个求出的值为:test.rar(文件说明),test.rar(文件说明)
我要的是test.rar或rar
为了减小复杂性,sdsdsdd这些字符去掉吧,即:
var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)
mingfish2 2012-08-27
  • 打赏
  • 举报
回复
sdsdsdd这一段时随机的吧,这就难找了
Go 旅城通票 2012-08-27
  • 打赏
  • 举报
回复
    var teststr = "c:\\file\\attachment\\201208\\test.rar(文件说明)sdsdsdd";//你这里的路径写错了
var testend = teststr.match(/([^\\]+)(\.[^\(]+)/i);
alert(testend.join('\n'))

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧