最后删除所有字符 - 但仅限于 - 后面有四个字符

时间:2010-11-17 00:01:43

标签: javascript regex

我有一个字符串,可以包含几个不同的值,其中包括。

为清晰起见,已编辑: var test可能等于FW21002-185或FW21002-181-0001或abcdefg或245-453-654或FW21002-181-00012

我想删除之后的所有字符,包括最后一个字符 - 只有当该字符串在最后一个短划线后包含四个字符时才会删除。因此,在上面的字符串示例中,唯一应该更改的是第二个“FW21002-181”。所有其他的将保持不变。

我将如何在JavaScript中执行此操作。正则表达式也可以。感谢。

3 个答案:

答案 0 :(得分:3)

执行此操作的正则表达式将是

var chopped = test.replace(/-[^-]{4,}$/, '-');

(假设你最后想要“ - ”)。 (哦,这也是为了匹配4个或更多尾随字符 - 如果你只想要四个,只需删除{4,}中的逗号。)

答案 1 :(得分:2)

不需要正则表达式:

var str = ...,
    pos = str.lastIndexOf('-');

if (pos > -1 && pos == str.length - 5)
  str = str.substring(0, pos);

答案 2 :(得分:1)

如果您不想使用正则表达式:

function removeLongSuffix(var str)
{
    var tokens = str.split('-'),
        last = tokens[tokens.length-1];
        if (last.length > 3)
        {
            return tokens.slice(0,-1).join('-');
        }
        return str;
}