1

我有:

var myclass = 'moreElements showAddElements-570';
var re = new RegExp('showAddElements\-\d*');
var m = re.exec(myclass);

alert(m[0]);
alert(m[1]);

第一个警报导致'showAddElements-',第二个警报导致'undefined'。我想得到'570',我在这里做错了什么?如果我测试它,我至少会到达那里'showAddElements-570' ......我在这里做错了什么?

感谢任何提示!

Ps:我只想要'showAddElements-'之后的数字,所有其他数字都应该省略..

4

4 回答 4

5

只需使用正确的正则表达式:

var re = /showAddElements-(\d+)/;

我删除了破折号之前的反斜杠(不需要),并在数字周围添加了括号以将其转换为捕获组 - 否则m[1]将始终是undefined.

看到它在行动

于 2012-09-21T14:46:41.647 回答
3

您需要实际捕获所需的子模式:

/showAddElements-(\d*)/

请注意,您不需要转义-,因为它在字符类之外没有任何意义。

于 2012-09-21T14:47:25.073 回答
1

这是一些有效的代码:

var myclass = 'moreElements showAddElements-570';
var re = new RegExp(/showAddElements\-(\d*)/);
var m = re.exec(myclass);
alert(m[1]);

线路有两个问题RegExp。第一个问题是表达式是用单引号而不是斜杠包裹的。当我第一次意识到发生了什么时,这让我大吃一惊,不知道你可以用斜线包裹一些东西。如果没有这些,它只会被视为表达式的字符串意图。

()第二个问题是数字部分周围没有。你需要它来真正“抓住”那部分。

这是一个工作链接:http: //jsfiddle.net/MvG2C/

于 2012-09-21T14:49:49.863 回答
0

您必须在所需的类周围添加括号才能捕获它:

var re = new RegExp('showAddElements\-([0-9]*)');
于 2012-09-21T14:49:04.190 回答