我试图获取字符串的最后一个字符,但前提是它与以下RegEx匹配:
/\W/
如果它不匹配,我希望它移动到下一个最后一个字符并再次进行测试,直到找到匹配为止。
function getLastChar(s) {
var l = s.length - 1;
return s[l - i]; // need logic to keep checking for /\W/
}
getLastChar('hello.'); // returns '.', want it to return 'o'
如果字符不是字母/数字,我有如下匹配的想法;但是,我正在寻找一个更优雅的解决方案,这个解决方案允许我在一行中使用三元if()
if(string.match(/\W/) !== null){
//keep looking for a match, going backwards.
}
答案 0 :(得分:2)
/(\w)\W*$/
捕获一个\w
字符,后跟零个或多个\W
字符,锚定在主题的末尾。
[评论后编辑。]
答案 1 :(得分:0)
足够简单..只做一个贪婪的比赛直到最后\W
string.match(/.*(\W)/)
答案 2 :(得分:0)
如果您正在寻找一个简单的答案,您可以使用单个正则表达式完成它,不需要循环 - 如下所示:
^.*(\W)[^\W]*$
捕获组将包含最后一个非单词字符。
例如,在~~~~ 99 * 9上运行此正则表达式会将字符*放在捕获组中。
编辑:
然而,在重新阅读你的问题之后,似乎你真的打算使用\ w而不是\ W - 换句话说,你想要最后一个字符,而不是最后一个非单词字符。通过在上面的正则表达式中交换\ W来轻松修复。