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

javascript正则表达式提取最后一个指定字符后的第一个字符,javascript,regex,Javascript,Regex,我试图提取字符串中最后一个下划线后的第一个字符,字符串中的“\u1”数字未知,但在我的情况下,始终会有一个字符,因为我是在该过程的另一个步骤中添加它的 我试过的是这个。我还尝试了正则表达式本身从名称中提取,但结果是空的 var s = "XXXX-XXXX_XX_DigitalF.pdf" var string = match(/[^_]*$/)[1] string.charAt(0) 因此,最终期望的结果是“D”。如果正则表达式只能得到最后一个“u”后面的内容,这很好,因为我知道我可以

我试图提取字符串中最后一个下划线后的第一个字符,字符串中的“\u1”数字未知,但在我的情况下,始终会有一个字符,因为我是在该过程的另一个步骤中添加它的

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

var s = "XXXX-XXXX_XX_DigitalF.pdf"

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

string.charAt(0) 

因此,最终期望的结果是“D”。如果正则表达式只能得到最后一个“u”后面的内容,这很好,因为我知道我可以使用当前显示的字符。然而,如果正则表达式可以完成整个过程,那就更好了

如果您知道始终至少有一个下划线,则可以执行以下操作:

var s = "XXXX-XXXX_XX_DigitalF.pdf"

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

// OR, with regex

var firstCharAfterUnderscore = s.match(/_([^_])[^_]*$/)[1]
使用正则表达式,您可以通过使用括号捕获匹配的这一部分来提取一个字母。但是我认为
.lastIndexOf()
版本更容易阅读


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

使用
[0]
它可以工作。那是因为regexp只有一个匹配项。我想知道。。。是的,谢谢。我和你在一起,读正则表达式对我来说很痛苦。非常感谢你迅速的回答。