我试图仅使用此正则表达式获取所选文件的名称:
var regex = /.*(\/|\\)/;
但它仅适用于某些情况,您可以在this fiddle中找到完整示例:
var regex = /.*(\/|\\)/;
var path1 = 'C:\fakepath\filename.doc'.replace(regex, ''),
path2 = 'C:\\fakepath\\filename.doc'.replace(regex, ''),
path3 = '/var/fakepath/filename.doc'.replace(regex, '');
如何解决这个问题?
答案 0 :(得分:3)
你的问题不在你想象的地方。
您的问题是写your literal string。
'C:\fakepath\filename.doc'
不会生成\
个字符,而会生成\f
个字符(换页)。
这就是说,当你想要提取字符串时不要使用replace
,而是match
,这样你就可以定义你想要的而不是你想要的东西:
var regex = /[^\/\\]+$/;
var path1 = 'C:\\fakepath\\filename.doc'.match(regex)[0],
path2 = 'C:\\fakepath\\filename.doc'.match(regex)[0],
path3 = '/var/fakepath/filename.doc'.match(regex)[0];