2013-07-04 88 views
0

我想只顯示 - 之後的值 - 如下所示。替換匹配模式中字符串的最後一個實例

$(function(){ 
     var aa = "ABCDEFGHIJKLMNOPQRS-TUVEXYZ"; 
     var bb = aa.substring(aa.indexOf("-") + 1); 
     $('#one').text(bb); 
    }); 

    $(function(){ 
     var cc = "ABC-DEFGHIJ-KLMNOPQRS-TUVEXYZ"; 
     var dd = cc.substring(cc.indexOf("-") + 1); 
     $('#two').text(dd); 
    }); 

這個輸出

<div id="one">TUVEXYZ</div> 
<div id="two">DEFGHIJ-KLMNOPQRS-TUVEXYZ</div> 

的第一個作品,因爲只有一個破折號然而,當有多個破折號我的代碼不能正常工作,因爲它只是看起來的第 - 。我將如何去尋找最後的 - 只有?

例如,如果我的代碼工作正如我想要的那樣,我希望我的最終結果看起來像這樣。

<div id="one">TUVEXYZ</div> 
<div id="two">TUVEXYZ</div> 
+3

_「我有一個正則表達式」_ - 不,你不知道。代碼顯示在任何地方都沒有正則表達式。 – nnnnnn

回答

6

使用lastIndexOf

var dd = cc.substring(cc.lastIndexOf("-") + 1); 
+0

出於好奇:如果字符串中沒有破折號會發生什麼?它會繼續工作嗎? –

+2

'lastIndexOf'將返回-1,所以你的子串將是相同的字符串。 – mohkhan

+0

對不起,閱讀我編輯的評論。如果你的子串等於你的原始字符串,那麼就沒有匹配。 – mohkhan

0

這可能是正則表達式,你正在尋找:)

var.replace(/(?:.*)\-(.*?)$/, $1); // or "$1", not really shure in JS 
4

使用正則表達式:

var myregexp = /[^-]*$/; 
var result = myregexp.exec(subject)[0]; 

此正則表達式的任何數量的匹配非短橫線字符,錨定到結尾該字符串有效地匹配在最後一個短劃線之後的所有內容(如果沒有短劃線,則爲整個字符串)。

相關問題