javascript正则表达式提取最后指定字符后的第一个字符

时间:2012-08-24 22:18:22

标签: javascript regex

我试图在字符串中的最后一个下划线之后提取第一个字符,字符串中包含未知数量的'_',但在我的情况下总会有一个,因为我在该过程的另一个步骤中添加了它。

我试过的是这个。我也尝试了正则表达式从名称中提取,但我的结果是空的。

var s = "XXXX-XXXX_XX_DigitalF.pdf"

var string = match(/[^_]*$/)[1]

string.charAt(0) 

所以最终的期望结果是'D'。如果RegEx只能告诉我最后'_'背后的内容,那很好,因为我知道我可以使用当前显示的charAt。但是,如果正则表达式可以完成整个事情,甚至更好。

1 个答案:

答案 0 :(得分:2)

如果你知道总会有至少一个下划线你可以这样做:

var s = "XXXX-XXXX_XX_DigitalF.pdf"

var firstCharAfterUnderscore = s.charAt(s.lastIndexOf("_") + 1);

// OR, with regex

var firstCharAfterUnderscore = s.match(/_([^_])[^_]*$/)[1]

使用正则表达式,您可以使用括号仅提取一个字母来捕获匹配的那一部分。但我认为.lastIndexOf()版本更容易阅读。

无论哪种方式,如果输入中没有下划线,您需要添加一些额外的逻辑。