【发布时间】:2014-03-28 00:49:29
【问题描述】:
我正在尝试获取字符串的最后一个字符,但前提是它与以下 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.
}
【问题讨论】:
-
类似
string.match(/(\w)\W*$/)?如果有匹配,它将位于结果数组的索引[1] -
您确定要
\W而不是\w?使用\W,您将只匹配非单词字符,因此'o'不匹配/\W/。 -
hmm.. 您的要求与您的示例返回值似乎不匹配。
\W表示“非单词字符”。所以你说你想匹配最后一个非单词字符。那么在你的例子中,你说它返回“。”但你期待“o”。但是“o”是一个单词字符。 -
Patrick:您应该询问实际问题,而不是您认为最好的解决方案。这样做只会增加太多的混乱。
标签: javascript regex string-matching