Javascript Regex - 如何在路径到图像之前提取最后一个单词

时间:2011-05-31 03:04:01

标签: javascript regex

我想使用正则表达式从文件路径中提取最后一个单词。例如,我有: / XYZ / blahblah / ZZZ / ABC-嗒嗒/ DEF-XYZ-的颜色 .JPG

我想从路径中提取“颜色”。路径颜色具有不同的语法。唯一一致的是结尾总是-color.jpg,其中颜色是任何[a-z]字。

有优雅的方法吗?

我真的很感激这里的任何帮助。感谢

5 个答案:

答案 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);