我有:
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-'之后输入数字,所有其他数字都应该省略..
答案 0 :(得分:5)
只需使用正确的正则表达式:
var re = /showAddElements-(\d+)/;
我在破折号之前删除了反斜杠(不需要)并在数字周围添加了parens以将其转换为捕获组 - 否则m[1]
始终为undefined
。
答案 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]*)');