我正在尝试使用带有exec函数的JavaScript正则表达式,并希望获得组的匹配。我无法弄清楚为什么我没有匹配。
这是我的代码:
var elementClass="validate[required]"
var myRegexp = /validate\\[(*)\\]/g;
var match = myRegexp.exec(elementClass);
每次匹配为空。我无法弄清楚为什么。它应该是“必需的”。
感谢您的帮助!
答案 0 :(得分:3)
请改用:
var myRegexp = /validate\[(.*)\]/;
首先,你只需要一个反斜杠来逃避 - 否则你正在寻找一个字面反斜杠,然后是你试图逃脱的特殊含义。
其次,*
只意味着“零或更多的最后一件事”,在这种情况下没有任何意义,因为那里什么都没有。 .
表示“任何东西”(嗯,差不多),所以.*
表示“任意数量的任何东西”。
最后,此处不需要g
标记,特别是如果您尝试捕获结果的一部分。
答案 1 :(得分:2)
1)你需要很多斜杠
var myRegexp = /validate\[(.*?)\]/g;
2)如果只想匹配方括号中的部分,则应使用组
var result = match[1];