Javascript正则表达式匹配字符串“game_1”

时间:2011-07-07 09:06:30

标签: javascript regex

我只是无法在javascript中使用此功能。所以,我有一个没有引号的文本“game_1”,现在我想从中得到这个数字,我尝试了这个:

var idText = "game_1";
re = /game_(.*?)/;
found = idText.match(re);

var ajdi = found[1];
alert( ajdi );

但它不起作用 - 请指出我哪里出错了。

6 个答案:

答案 0 :(得分:5)

如果您只是匹配某个号码,则可能需要尝试

/game_([0-9]+)/

作为你的正则表达式。这将匹配至少一个号码,这似乎是您所需要的。您输入了允许0个字符(*)的正则表达式,并让它选择最短的结果(?),这可能是一个问题(并匹配0个字符),具体取决于正则表达式引擎

答案 1 :(得分:4)

如果这是完整的文本,则不需要正则表达式:

var id = +str.split('_')[1];

var id = +str.replace('game_', '');

(一元+是将字符串转换为数字)


如果你坚持正则表达式,你必须锚定表达式:

/^game_(.*?)$/

或省略*

,使? 贪婪
/game_(.*)/

最好是使表达式更具限制性@Naltharial suggested

答案 2 :(得分:1)

*表示零次或多次出现。似乎将它与贪婪控制器?相结合会导致零匹配。

您可以将*替换为+(这意味着一个或更多次出现),但作为@Felix Kling备注,它只会匹配一个数字。

最好完全放弃?

http://jsfiddle.net/G8Qt7/2/

答案 3 :(得分:1)

简单的字符串操作:

var idText = "game_1",
    adji = parseInt(idText.substring(5), 10);

答案 4 :(得分:0)

尝试"game_1".replace(/^(game_)/, '')
这将返回数字

答案 5 :(得分:0)

您只需使用此/\d+/来获取字符串中的任何数字