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

标签 javascript regex

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

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

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/

相关文章:

javascript - 如何在同一个对象上组合两个 Javascript 函数

javascript - 当元素由脚本动态生成并通过类选择器访问时,如何在 Jquery 中的单击事件上调用函数?

javascript - KNEX 和 MYSQL - 错误 : ER_CANNOT_ADD_FOREIGN: Cannot add foreign key constraint

javascript - 当前 Ajax 请求的最佳实践

php - 如何从数组中删除所有 html 标签?

regex - 通过 Bash 脚本捕获文本组

javascript - 将 DIV 移出屏幕而不影响宽度?

javascript - JavaScript : replace function not working as expected

c# - 使用逗号分隔列表的最简单方法

Powershell 中的 RegEx,合并替换调用