2013-07-04 3 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]; 

Это регулярное выражение соответствует любое число несимметричные символы, привязанные к концу строка, которая эффективно соответствует всем тем, что следует за последней тире (или всей строкой, если нет тире).

Смежные вопросы