1

我正在尝试将 JavaScript 正则表达式与 exec 函数一起使用,并希望获得一个组的匹配项。我只是想不通为什么我没有得到匹配。

这是我的代码:

var elementClass="validate[required]"
var myRegexp = /validate\\[(*)\\]/g;
var match = myRegexp.exec(elementClass);

匹配每次都是空的。我不知道为什么。它应该是“必需的”。

谢谢您的帮助!

4

2 回答 2

3

改用这个:

var myRegexp = /validate\[(.*)\]/;

首先,您只需要一个反斜杠即可转义 - 否则您正在搜索文字反斜杠,然后是您试图转义的特殊含义。

其次,*仅表示“最后一件事的零个或多个”,在这种情况下没有任何意义,因为那里什么都没有。.意思是“任何东西”(嗯,几乎)所以.*意思是“任意数量的任何东西”。

最后,g这里不需要该标志,尤其是当您试图捕获结果的一部分时。

于 2013-03-03T00:06:37.967 回答
2

1)你有很多斜线

var myRegexp = /validate\[(.*?)\]/g;

2)如果你只想匹配方括号中的部分,你应该使用组

var result = match[1];
于 2013-03-03T00:06:24.267 回答