替换字符串中匹配模式的最后一个实例

时间:2013-07-04 12:43:47

标签: javascript replace

我想只显示 - 之后的值。如下所示。

    $(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 个答案:

答案 0 :(得分:6)

使用lastIndexOf

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

答案 1 :(得分:4)

使用正则表达式:

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

此正则表达式匹配任意数量的非短划线字符,锚定在字符串的末尾,有效地匹配最后一个短划线后面的所有内容(如果没有短划线,则整个字符串)。

答案 2 :(得分:0)

这可能是你正在寻找的正则表达式:)

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