匹配最后一个字符,如果regex为空,则在最后一个字符旁边

Match last character, get next to last if regex is null

本文关键字:最后一个 字符 如果 regex 为空      更新时间:2023-09-26

我试图获得字符串的最后一个字符,但只有当它匹配以下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. }

/('w)'W*$/

捕获一个'w字符,后跟零个或多个'W字符,锚定在主题的末尾。

很简单。只做贪婪匹配直到最后一个'W

string.match(/.*('W)/)

如果您正在寻找一个简单的答案,您可以使用单个regex来完成它,而不需要循环-就像下面这样:

^.*('W)[^'W]*$

捕获组将包含最后一个非单词字符。

例如,在~~~~99*9上运行这个正则表达式将字符*放在捕获组中。

编辑:

然而,重读你的问题后,似乎你真的想使用'w而不是'w——换句话说,你想要的是最后一个单词字符,而不是最后一个非单词字符。这很容易通过在上面的正则表达式中将'W换成'W来修复。