2012-08-24 42 views
0

我想提取字符串中最後一個下劃線之後的第一個字符,字符串中有未知數字'_',但在我的情況下總是會有一個字符,因爲我在這個過程的另一個步驟中添加了它。javascript正則表達式提取最後指定的字符後的第一個字符

我試過的是這個。我也嘗試了正則表達式來從名字中提取,但是我的結果是空的。

var s = "XXXX-XXXX_XX_DigitalF.pdf" 

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

string.charAt(0) 

所以最終的結果是'D'。如果RegEx只能得到我最後一個'_'後面的東西,那很好,因爲我知道我可以使用像當前所示的charAt。但是,如果正則表達式可以完成所有的事情,甚至更好。

+0

使用'[0]'它有效。這是因爲只有一個匹配的正則表達式。 – pimvdb

+0

我想知道這件事......是的,這工作表示感謝。 – Kendrid360

回答

2

如果你知道總會有至少一個下劃線,你可以這樣做:

var s = "XXXX-XXXX_XX_DigitalF.pdf" 

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

// OR, with regex 

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

用正則表達式,您可以通過使用括號捕捉比賽的那部分只提取一個字母。但我認爲.lastIndexOf()版本更易於閱讀。

無論哪種方式,如果有可能在輸入中沒有下劃線,你需要添加一些額外的邏輯。

+0

我和你在一起,閱讀正則表達式對我來說是痛苦的。非常感謝您的快速回答。 – Kendrid360

相關問題