我只是无法在javascript中使用此功能。所以,我有一个没有引号的文本“game_1”,现在我想从中得到这个数字,我尝试了这个:
var idText = "game_1";
re = /game_(.*?)/;
found = idText.match(re);
var ajdi = found[1];
alert( ajdi );
但它不起作用 - 请指出我哪里出错了。
答案 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备注,它只会匹配一个数字。
最好完全放弃?
。
答案 3 :(得分:1)
简单的字符串操作:
var idText = "game_1",
adji = parseInt(idText.substring(5), 10);
答案 4 :(得分:0)
尝试"game_1".replace(/^(game_)/, '')
这将返回数字
答案 5 :(得分:0)
您只需使用此/\d+/
来获取字符串中的任何数字