Javascript从引用者解析id

时间:2012-11-08 16:25:33

标签: javascript regex

我使用document.referrer属性来获取以下网址:

http://www.site.ru/profile/521590819123/friends
http://www.site.ru/profile/521590819123
http://www.site.ru/profile/521590819123/else

我需要从此字符串中获取ID(例如,如上所示,521590819123)到变量中。以下是我到目前为止的情况:

<script type="text/javascript">
var ref = document.referrer;
var url = 'http://site.com/?id=';
if( ref.indexOf('profile') >= 0 ) 
{
  ref = ref.substr(ref.lastIndexOf('/') + 1);
  window.top.location.href = (url+ref);
}
else
 {
 window.top.location.href = (url + '22');
 }
</script>

但这只适用于引荐来源字符串格式为http://www.site.ru/profile/521590819123的情况。上面使用/friends/else的其他示例将无效。有人可以帮我修复代码来处理这些实例吗?

1 个答案:

答案 0 :(得分:2)

使用正则表达式最简单:

var m, id;
m = /profile\/(\d+)/.exec(document.referrer);
if (m) {
    id = m[1];
}

正则表达式说“查找文本profile/后跟数字的第一个位置,并将数字放在捕获组中。”然后代码检查是否存在匹配(如果字符串根本没有它),如果是,则从第一个捕获组获取值(在索引1处;索引0是整个匹配的字符串) 。根据需要进行修改(例如,仅在字符串为www.site.ru/profile/时才匹配,而不仅仅是profile/等)。