2010-11-17 84 views
1

我有一个字符串,可能包含几个不同的值,其中之一。删除所有字符后最后 - 但只有后 - 有四个字符

编辑的清晰度: VAR测试可以等于FW21002-185或FW21002-181-0001或ABCDEFG或245-453-654或FW21002-181-00012

我想后删除所有的字符,包括最后 - 仅当该字符串包含最后一个破折号后的四个字符时。所以在上面的字符串示例中,唯一应该更改的是第二个“FW21002-181”。其他所有字符都保持原样。

我该如何在JavaScript中做到这一点。正则表达式也可以。谢谢。

+1

中的JavaScript你贴是没有意义和语法无效。 – 2010-11-17 00:05:13

+0

这并不意味着它是“有效的”javascript。我试图说明,变量测试可能包含下面显示的任何值 – user357034 2010-11-17 00:08:08

回答

3

一个正则表达式做这将是

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

(假设你想要的 “ - ” 结尾)。 (哦也,这是一种旨在匹配4个以上尾随字符 - 如果你想要的是四个刚刚获得{4,}摆脱逗号。)

+0

谢谢,我的错误,我不想要最后一个“ - ”。所以我猜它的var chopped = test.replace(/ - [^ \ - ] {4,} $ /,''); – user357034 2010-11-17 00:14:03

+0

是的 - 我还在[^ - ]的东西中修正了这个流浪的反斜杠 - 你不需要这个。 – Pointy 2010-11-17 00:15:15

+0

工作完美没有,在{4}和与“”作为替换字符串,THX! – user357034 2010-11-17 00:29:56

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; 
} 
2

无需正则表达式:

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

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