我想使用正则表达式从文件路径中提取最后一个单词。例如,我有: / XYZ / blahblah / ZZZ / ABC-嗒嗒/ DEF-XYZ-的颜色 .JPG
我想从路径中提取“颜色”。路径颜色具有不同的语法。唯一一致的是结尾总是-color.jpg,其中颜色是任何[a-z]字。
有优雅的方法吗?
我真的很感激这里的任何帮助。感谢
答案 0 :(得分:2)
为什么你可以只使用子字符串而不是使用正则表达式?
var path=" /xyz/blahblah/zzz/abc-blah/def-xyz-color.jpg";
var lastHyphen = path.lastIndexOf("-");
var lastDot = path.lastIndexOf(".");
var extractedValue=path.substring(lastHyphen + 1, lastDot);
更紧凑的版本
var extractedValue=path.substring(path.lastIndexOf("-") + 1, path.lastIndexOf("."));
答案 1 :(得分:1)
var matched = /-(\w+).jpg/i.exec('/xyz/blahblah/zzz/abc-blah/def-xyz-color.jpg')[1];
答案 2 :(得分:0)
怎么样?
-(\w+)\.jpg
如果您不想对扩展程序进行硬编码,可以执行以下操作:
-(\w+)\.\w+\b
当然,这会匹配很多东西,但我假设要匹配的文字将是网址;)
修改强>
它将匹配两个组,您只需要获取第二个组,因此只需访问第一个索引:
var text = '/xyz/blahblah/zzz/abc-blah/def-xyz-color.jpg';
var pattern = /-(\w+)\.\w+\b/;
var match = pattern.exec(text);
alert(match[1]); // color
或者像@Ryan建议的那样在一行中完成。
答案 3 :(得分:0)
为什么要使用正则表达式?
var a = '/xyz/blahblah/zzz/abc-blah/def-xyz-color.jpg'
.split('/').pop()
.split('-').pop()
.split('.')[0];
console.log(a);
答案 4 :(得分:0)
为什么不
var path= "/xyz/blahblah/zzz/abc-blah/def-xyz-color.jpg";
/(?:([^-.]+?)\.[^.]+?$)/i.test(path);
var color = RegExp.$1;
alert(color);