Javascript 使用正则表达式验证自定义表达式

Javascript 使用正则表达式验证自定义表达式,javascript,arrays,regex,validation,npm-install,Javascript,Arrays,Regex,Validation,Npm Install,如果我有一根像 ${employee} and ${} should be validate 我想获取包含以下模式的所有子字符串 ${} 并验证以${和}开头的字符串是否必须有值 假设为下面的字符串 ${employee} and ${} should be validate 它应该返回包含两个元素的数组 [${employee},${}] 验证后,它应该显示第二个元素无效(因为它是空的) 为此,我尝试了以下代码 function fetchMatches(theString, theR

如果我有一根像

${employee} and ${} should be validate
我想获取包含以下模式的所有子字符串

${}

并验证以${和}开头的字符串是否必须有值

假设为下面的字符串

  ${employee} and ${} should be validate
它应该返回包含两个元素的数组

[${employee},${}]

验证后,它应该显示第二个元素无效(因为它是空的)

为此,我尝试了以下代码

function fetchMatches(theString, theRegex){
    return theString.match(theRegex).map(function(el) {
        var index = theString.indexOf(el);
        return [index, index + el.length - 1];
    });
}
fetchMatches(" ${employee} and ${} should be validate",/(\$)(\{)(.*)(\})/i);
但它并没有返回所需的输出


各位,请提供一些帮助

您可以尝试将正则表达式从

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

试试这个:

\$\{(\w+)?\}

<代码>(\W+)?<代码>将考虑是否存在{{}}或“

< p>”中的字符:您可以使用以下解决方案:使用<代码> /\{{[^ {} ] *}/g < /代码>正则表达式> <代码>字符串匹配> <代码>来获取所有匹配,然后在匹配项上循环以检查是否有空值:

var s=“${user.lastName}${user.firstName}${}”;
var m,结果=[];
变量re=/\${[^{}]*}/g;
while((m=re.exec))!==null){
if(m[0]==“${}”){
log(“索引处的变量”,m.Index,“为空”);
}否则{
结果:push(m[0]);
}
}

控制台日志(结果)这不是很清楚。如果您只需要匹配非空的
${xxx}
,您可以只使用
/\${[^}]+}/g
regex。然后,您可以使用
indexOf('${}')
检查字符串。我需要所有以${开头并以}结尾的子字符串,并根据输出检查是否有任何子字符串为空。对不起,仍然不清楚您想要得到的确切输出。假设字符串“${employee}和${}应该得到验证”它应该返回一个数组作为[${employee},${}],并使用输出数组,我想检查字符串是否以${开头并以}结尾不能为空。如果您将
/I
更改为
/g
,我想它将为您提供两个匹配项。感谢您的更新,它在索引位置上运行良好,它应该是字符串的位置。同样对于类似${user.${}lastName}${user.firstName}${}的字符串,实际上,
${user.lastName}${user.firstName}${}
与原始建议配合得很好。您没有提到可以存在嵌套值。可以有多少嵌套级别?另外,您是否可以使用第三方库,如
XRegExp
?XRegExp可以处理嵌套结构。对于
${user.${}lastName}${user.firstName}${}
,预期的结果是什么?我只想验证表达式。最终结果应该是有效的。
\$\{(\w+)?\}