查找并获取字符串中的数字

Vla*_*nov 5 javascript regex

请帮我解决这个奇怪的情况:

这是代码:

链接是这样的 - www.blablabla.ru#3

正则表达式是这样的:

var id = window.location.href.replace(/\D/, '' );
alert(id);
Run Code Online (Sandbox Code Playgroud)

正则表达式是正确的 - 它必须只显示数字......但它没有显示数字:-(

你可以请教我,并提供一些关于如何只获得字符串数字的信息吗?

谢谢

Iva*_*rić 12

您只用空字符串替换第一个非数字字符.尝试使用:

var id = window.location.href.replace(/\D+/g, '' ); alert(id);
Run Code Online (Sandbox Code Playgroud)

(注意正则表达式末尾的"全局"标志).

  • 我的测试表明,使用`/\D +/g`而不仅仅是`/\D/g`效率提高了约30%.var r1 = /\D/g,r2 = /\D +/g,s ="",MAX = 1020,i = MAX; 做{s + =(i%2)?"aaaaaaaaaaa":"11111111111"; } 当我); console.time( "\\ d"); for(var i = 0; i <MAX; ++ i){s.replace(r1,""); } console.timeEnd("\\ D"); console.time( "\\ d +"); for(var i = 0; i <MAX; ++ i){s.replace(r2,""); } console.timeEnd("\\ D +"); (2认同)

Kob*_*obi 6

考虑使用location.hash- 这只包含url末尾的#标签:"#42".
你可以写:

var id = location.hash.substring(1);
Run Code Online (Sandbox Code Playgroud)


YOU*_*YOU 1

使用flag /\D/g,全局替换所有实例

var id = window.location.href.replace(/\D/g, '' );
alert(id);
Run Code Online (Sandbox Code Playgroud)

根据贾斯汀·约翰逊的说法,它的性能比 更好,我认为这是因为可以/\D+/一次性匹配和取代它。/\D/g\D+