Javascript 接受表达式的字符串需要正则表达式

Javascript 接受表达式的字符串需要正则表达式,javascript,regex,Javascript,Regex,我需要一个字符串的正则表达式,它可以是 abc -> valid abc-${test_name/test.name}-123 -> valid abc-${test.name-123 -> invalid` 我试过了 ^[a-z0-9-$^\{.*\}$._]+$ ^\{.*\}$ 而且 ^[a-zA-Z0-9]*-\${[a-zA-Z0-9]*}-[0-9a-zA-Z]+$ 但不按预期工作您可以使用 /^[a-z]+(?:-\${[^{}]*}(?:-\d+)?)

我需要一个字符串的正则表达式,它可以是

abc -> valid
abc-${test_name/test.name}-123 -> valid
abc-${test.name-123 -> invalid`
我试过了

^[a-z0-9-$^\{.*\}$._]+$

^\{.*\}$
而且

 ^[a-zA-Z0-9]*-\${[a-zA-Z0-9]*}-[0-9a-zA-Z]+$
但不按预期工作

您可以使用

/^[a-z]+(?:-\${[^{}]*}(?:-\d+)?)?$/i

详情:

  • ^
    -字符串的开头
  • [a-z]+
    -一个或多个字母
  • (?:-\${[^{}]*}(?:-\d+)?
    -可选字符串
    • -\${[^{}]*}
      -
      ${
      ,除
      {
      }
      之外的任何零个或多个字符,然后是
      }
    • (?:-\d+)
      -由
      -
      和一个或多个数字组成的可选字符串
  • $
    -字符串结束
请参阅JavaScript演示:

const strings=['abc','abc-${test_name/test.name}-123','abc-${test.name-123'];
常量regex=/^[a-z]+(?:-\${[^{}]*}(?:-\d+)?$/i;
for(让我们来看看字符串){
console.log,“=>”,regex.test);

}
适用于所有示例。请尝试:

/^[\w-.]+$|^[\w]+-?\$\{[\w\/.]+\}-?[\w]+$/

您可能需要转义大括号字符。我不确定我是否清楚您的规范。您试图验证什么属性?字符串在哪里(提示:在它们周围加引号)?我不确定您想做什么,但请尝试以下操作:
^[^-]+(\-\$\{[^}]+\)(\-[a-zA-Z0-9]+)*$
您可以使用:
^(?\${[^}+\\\}+\\\\\[\w-]+$
我认为这是可行的^[^-]+(\-\$\{[^}]+\})*(\-[a-zA-Z0-9]+)*$,谢谢