0

我正在尝试以match这种形式从 url 获取“12345”:

http://domain.com/folder/title_of_this_12345

到目前为止,我已经尝试过:

var pattern = "_([0-9]+)^";

alert(window.location.pathname.match(pattern));

但我只是返回null?

目的是将字符串末尾的数字正则表达式到第一个下划线?

4

3 回答 3

4

如果您将 替换为^$您的方法将起作用。^匹配字符串的开头,而$匹配字符串的结尾(尽管此处不相关,请查看有关$出现换行符时的行为的文档)。

非正则表达式解决方案是可能的,但如果链接可能包含也可能不包含数字,您将不得不检查最后一个标记是数字还是检查解析结果是否为 NaN。所以正则表达式可能是这里合适的解决方案。

于 2012-06-18T03:37:43.940 回答
2

为了清楚起见,匹配的数字本身是在返回数组的索引 1 处检索的:

alert(str.match(/_(\d+)$/)[1]);
于 2012-06-18T16:56:46.633 回答
1

尝试

var path = window.location.pathname;
var num = parseInt(path.substr(path.lastIndexOf('_') + 1, 10));

作为不涉及正则表达式的替代方案。

实际上,请参阅 GGG 对该问题的评论,以获得更简洁的非正则表达式方法。

于 2012-06-18T03:40:50.943 回答