2010-11-17 86 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); 
相關問題