我试图提取字符串中最后一个下划线之后的第一个字符,其中字符串中的“_”数量未知,但在我的情况下总会有一个,因为我在过程的另一步骤中添加了它。
我尝试过的是这个。我还尝试了正则表达式本身来从名称中提取,但结果是空的。
var s = "XXXX-XXXX_XX_DigitalF.pdf"
var string = match(/[^_]*$/)[1]
string.charAt(0)
所以最终想要的结果是“D”。如果正则表达式只能获取最后一个“_”后面的内容,那很好,因为我知道我可以使用当前显示的 charAt 。但是,如果正则表达式可以完成所有事情,那就更好了。
最佳答案
如果你知道总会有至少一个下划线,你可以这样做:
var s = "XXXX-XXXX_XX_DigitalF.pdf"
var firstCharAfterUnderscore = s.charAt(s.lastIndexOf("_") + 1);
// OR, with regex
var firstCharAfterUnderscore = s.match(/_([^_])[^_]*$/)[1]
使用正则表达式,您可以通过使用括号捕获匹配的该部分来仅提取一个字母。但我认为 .lastIndexOf()
版本更容易阅读。
无论哪种方式,如果输入中可能没有下划线,您都需要添加一些额外的逻辑。
关于javascript正则表达式提取最后一个指定字符之后的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117357/