【问题标题】:javascript get substring between two sets of charactersjavascript获取两组字符之间的子字符串
【发布时间】:2018-09-22 12:59:02
【问题描述】:

我有以下字符串:

var myString = '<p><i class="someclass"></i><img scr="somesource"/><img class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/><span class="someclass"></span></p>';

如何用最少的代码获得 someExtraStuff.fileExt 部分?

我应该先做 indexOf {{appName}} 然后直到下一个 "/&gt; 吗?

【问题讨论】:

    标签: javascript string substring


    【解决方案1】:

    您可以搜索模式{{appName}} 并获取所有不是引号的字符。然后取匹配的第二个元素。

    var string = '<p><i class="someclass"></i><img scr="somesource"/><img class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/><span class="someclass"></span></p>',
        substring = (string.match(/\{\{appName\}\}([^"]+)/) || [])[1]
    
    console.log(substring);

    【讨论】:

    • 您能解释一下您的正则表达式模式吗?如果结尾是 "/&gt;" /&gt;(带空格),它会起作用吗?
    • 它只查找不是" 的所有字符。它适用于两个版本。
    【解决方案2】:

    你可以用三种方法做到这一点

    // 1 个选项 对于单个match

    var regex = /\{\{appName\}\}([^"]+)/;
    var myString = '<p class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/>';
    console.log(myString.match(regex)[1]);
    

    // 2 选项 对于多个matches

    var regex = /\{\{appName\}\}([^"]+)/g;
    var myString = '<p class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/>';
    var temp;
    var resultArray = [];
    while ((temp = regex.exec(myString)) != null) {
        resultArray.push(temp[1]);
    }
    console.log(resultArray);
    

    //indexOf的3个选项

    var firstIndex= myString.indexOf("{{appName}}");
    var lastIndex =firstIndex+ myString.substring(firstIndex).indexOf('"/>')
    var finalString = myString.substring(firstIndex,lastIndex).replace("{{appName}}","");
    console.log(finalString);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-02
      • 2013-01-29
      • 1970-01-01
      • 2013-09-12
      • 2020-01-09
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多