Javascript中字符串的正则表达式

时间:2015-03-04 20:34:26

标签: javascript regex string node.js

我正在寻找在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 = /\$(.*)\}/;

但它并非以“}”符号结尾。

4 个答案:

答案 0 :(得分:2)

匹配模式

如果你想匹配${...}模式,那么你可以使用这个正则表达式:

\$\{.*?\}

<强> Working demo

enter image description here

匹配模式和抓取内容

另一方面,如果你想捕获${...}内的内容,你可以使用这样的捕获组:

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

<强> Working demo

enter image description here

匹配信息将是:

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

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

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.
}

答案 1 :(得分:0)

听起来你需要把它改成这样的东西:

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

请在此处查看:Regex101

我让它变得懒惰,因为默认情况下正则表达式是贪婪的,并且默认情况下正在寻找最后的}

答案 2 :(得分:0)

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

\$\{[^}]*\}

这样,它与'}'的第一个匹配项匹配,因为[^}]表示“匹配任何字符,但'}'”。

答案 3 :(得分:-1)

你忘记了大括号{

这应该有效:

/\$\{(.*)\}/