0

我想location.pathname.match用来查找后面的数字,#以便some.domain.com/#123我可以更改一些 Javascript 代码

res.render('index.ejs' ...

var pageNum = location.pathname.match(REGULAR_EXPRESSION_GOES_HERE)[1];
res.render('index' + pageNum + '.ejs' ...

这样,我渲染index123.ejs而不是index.ejs.

我一直在研究如何做到这一点的正则表达式,我有点迷茫。那里有任何有用的灵魂有神奇的答案吗?

[编辑:]你们都帮了大忙!我希望我不是太新来支持你们!

4

3 回答 3

3

不需要所有这些手动的东西。位置对象在hash属性中具有您想要的数据。请参阅:https ://developer.mozilla.org/en-US/docs/DOM/window.location

因此,只需执行以下操作:

var hash = window.location.hash;
if (hash.length && !isNaN(hash = parseInt(hash.substr(1)))) {
    res.render('index' + hash + '.ejs');
}
else {
    //oops, hash is not a number. Handle it.
}
于 2012-10-26T23:24:45.350 回答
0
var result = location.pathname.match(/some.domain.com\/\#(.*)$/);
alert(result [1]);

并且不要忘记检查是否有结果[1]...

于 2012-10-26T23:19:53.923 回答
0

你最好的选择是

var pageNum = window.location.hash.replace(/\D+/g, '');

如果您想使用正则表达式,您的代码应如下所示:

var pageNum = location.pathname.match(/#(\d+)/)[1];

检查这个演示

于 2012-10-26T23:36:44.120 回答