我正在寻找在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 = /\$(.*)\}/;
但它并非以“}”符号结尾。
答案 0 :(得分:2)
如果你想匹配${...}
模式,那么你可以使用这个正则表达式:
\$\{.*?\}
<强> Working demo 强>
另一方面,如果你想捕获${...}
内的内容,你可以使用这样的捕获组:
\$\{(.*?)\}
^---^--- Capture here
<强> Working demo 强>
匹配信息将是:
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)
你忘记了大括号{
这应该有效:
/\$\{(.*)\}/