请帮我解决这个奇怪的情况:
这是代码:
链接如此 - www.blablabla.ru#3
正则表达式是这样的:
var id = window.location.href.replace(/\D/, '' );
alert(id);
正则表达式是正确的 - 它必须只显示数字......但它没有显示数字:-(
您能否请教我并提供一些有关如何仅获取字符串数字的信息?
由于
答案 0 :(得分:12)
您只用空字符串替换第一个非数字字符。尝试使用:
var id = window.location.href.replace(/\D+/g, '' ); alert(id);
(注意正则表达式末尾的“全局”标志)。
答案 1 :(得分:6)
考虑使用location.hash
- 这只包含网址末尾的主题标签:"#42"
。
你可以写:
var id = location.hash.substring(1);
答案 2 :(得分:3)
修改:请参阅Kobi's answer。如果你真的使用哈希部分,只需使用location.hash
! (对自己:Doh!)
但我会留下以下内容,以防你做的事比你的例子更复杂。
原始答案:
正如其他人所说,你已经在你的替代品中遗漏了全球旗帜。但是我担心这个表达,它真的很脆弱。考虑一下:www.37signals.com#42
:你得到的数字字符串将是3742,这可能不是你想要的。其他示例:www.blablabla.ru/user/4#3
(43),www2.blablabla.ru#3
(23),...
如何'回合:
id = window.location.href.match(/\#(\d+)/)[1];
...它会在哈希标记之后立即获得连续的数字集(如果没有,则为undefined)。
答案 3 :(得分:1)
使用标记/\D/g
,全局替换所有实例
var id = window.location.href.replace(/\D/g, '' );
alert(id);
根据Justin Johnson的说法,/\D+/
的效果优于/\D/g
,我认为因为\D+
可以匹配并一次性替换它。