如何javascript正好匹配来自不同网址的7个数字

时间:2016-07-12 23:27:27

标签: javascript regex match bookmarklet

我有像

这样的网址

我的javascript bookmarklet看起来如下所示。

javascript:(function(){javascript:var location_pathname = document.location.href;var ggId = location_pathname.match(/^[0-9]{7}$/)[1]; window.open('http://localhost/script.php?id='+ggId, '_blank')})()

如何匹配每个网址中的7个数字?以上是我的脚本,但它不起作用。如果我将示例与"/\/something\/(.*)/"代码相匹配并打开新标签http://localhost/script.php?id=9303033,但仅在某些情况下有效。

2 个答案:

答案 0 :(得分:1)

如果斜杠(/)之后正好有7位数,而另一个斜杠或EOL则正确,那么正确的RegEx是

var re = /\/(\d{7})\/?|$/; //note (\d{7}) This is what will be captured
//tests
'http://www.gg.omg/whatever/4303013'.match(re)[1]; //4303013
'http://www.gg.omg/whatever/4303013/maybe'.match(re)[1]; //4303013
'http://www.gg.omg/whatever/430301'.match(re)[1]; //undefined

答案 1 :(得分:0)

在正则表达式的开头删除^,在结尾处删除$,以匹配网址的任何位置。

location_pathname.match(/([0-9]{7})/)[1];