在字符串中查找整数

时间:2012-09-21 14:44:29

标签: javascript regex

我有:

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',我在这里做错了什么?如果我test它,我至少会到那里'showAddElements-570' ...我在这里做错了什么?

任何tipps的Thx!

P.s。:我只想在'showAddElements-'之后输入数字,所有其他数字都应该省略..

4 个答案:

答案 0 :(得分:5)

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

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

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

See it in action

答案 1 :(得分:3)

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

/showAddElements-(\d*)/

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

答案 2 :(得分: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/

答案 3 :(得分:0)

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

var re = new RegExp('showAddElements\-([0-9]*)');