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+)
和一个或多个数字组成的可选字符串-
-字符串结束$
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]+)*$,谢谢