我正在尝试以match
这种形式从 url 获取“12345”:
http://domain.com/folder/title_of_this_12345
到目前为止,我已经尝试过:
var pattern = "_([0-9]+)^";
alert(window.location.pathname.match(pattern));
但我只是返回null?
目的是将字符串末尾的数字正则表达式到第一个下划线?
我正在尝试以match
这种形式从 url 获取“12345”:
http://domain.com/folder/title_of_this_12345
到目前为止,我已经尝试过:
var pattern = "_([0-9]+)^";
alert(window.location.pathname.match(pattern));
但我只是返回null?
目的是将字符串末尾的数字正则表达式到第一个下划线?
如果您将 替换为^
,$
您的方法将起作用。^
匹配字符串的开头,而$
匹配字符串的结尾(尽管此处不相关,请查看有关$
出现换行符时的行为的文档)。
非正则表达式解决方案是可能的,但如果链接可能包含也可能不包含数字,您将不得不检查最后一个标记是数字还是检查解析结果是否为 NaN。所以正则表达式可能是这里合适的解决方案。
为了清楚起见,匹配的数字本身是在返回数组的索引 1 处检索的:
alert(str.match(/_(\d+)$/)[1]);
尝试
var path = window.location.pathname;
var num = parseInt(path.substr(path.lastIndexOf('_') + 1, 10));
作为不涉及正则表达式的替代方案。
实际上,请参阅 GGG 对该问题的评论,以获得更简洁的非正则表达式方法。