我正在寻找在JavaScript中创建一个常规exp,以查找诸如${.............}之类的模式。假设是否有类似的字符串

{
      "type" : "id",
      "id" : ${idOf('/tar/check/inof/high1')},
      "details" : [
        {
          "name" : "Sanio",
          "sig" : "DA123QW"
        },
        {
          "name" : "Tarer",
          "sig" : "BAWE3QW"
        },
        {
          "name" : "Kadek",
          "sig" : "KSWE2J"
        },
      ]
    },


因此,我正在搜索具有$ {whateverhere}的所有模式

我正在尝试

var pathRegExp = /\$(.*)\}/;


但是它不以“}”符号结尾。

最佳答案

比赛模式

如果要匹配${...}模式,则可以使用此正则表达式:

\$\{.*?\}


Working demo



匹配模式并抓取内容

另一方面,如果要捕获${...}中的内容,则可以使用如下捕获组:

\$\{(.*?)\}
    ^---^--- Capture here


Working demo



匹配信息为:

MATCH 1
1.  [38-67] `idOf('/tar/check/inof/high1')`
MATCH 2
1.  [199-209]   `anotherOne`


如果您查看Code generator部分,您可以找到以下代码:

var re = /\$\{(.*?)\}/g;
var str = '{\n      "type" : "id",\n      "id" : ${idOf(\'/tar/check/inof/high1\')},\n      "details" : [\n        {\n          "name" : "Sanio",\n          "sig" : "DA123QW"\n        },\n        {\n          "name" : "${anotherOne}",\n          "sig" : "BAWE3QW"\n        },\n        {\n          "name" : "Kadek",\n          "sig" : "KSWE2J"\n        },\n      ]\n    },';
var m;

while ((m = re.exec(str)) != null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

09-19 10:47