使用javascript从网址中提取数字?

时间:2010-03-15 19:02:01

标签: javascript regex

var exampleURL = '/example/url/345234/test/';
var numbersOnly = [?]

路径的/url//test部分将始终相同。

请注意,我需要/url//test之间的数字。在上面的示例网址中,占位符字示例可能也是不时的数字,但在这种情况下,它不应该匹配。仅限/url//test之间的数字。

谢谢!

3 个答案:

答案 0 :(得分:7)

var exampleURL = '/example/url/345234/test/';

// this will remove all non-numbers
var numbers = exampleURL.replace(/[\D]/g, '');

// or you can split the string and take only that 3rd bit
var numbers = exampleURL.split(/\//)[3];

// or match with a regex
var numbers = exampleURL.match(/\/(\d+)\/test\//)[1];

答案 1 :(得分:4)

这些方面的东西:

var result;
result = value.match(/\/url\/([0-9]+)\/test/);
// use result[1] to get the numbers (the first capture group)

这取决于/url//test位,因为你说它们是可靠的。更一般地说,这将匹配字符串中第一个数字运行:

var result;
result = value.match(/[0-9]+/);
// use result[0] (not result[1]), which is the total match

MDC page on regular expressions非常有用。

注意:您可以使用代表“数字”的[0-9]代替\d。我没有,因为我的正则表达式很弱而且我永远记不住它(当我这样做时,我永远不会记得它是全部数字还是所有非数字[\D - 你看到我的困惑当我稍后阅读时,我发现[0-9]非常清楚。其他人可能会发现\d更清楚,但对我来说,我喜欢列出范围的明确性。

答案 2 :(得分:1)

可行的正则表达式

matches = exampleURL.match('/\/.+\/url/([0-9]+)\/test\//');

我认为这是对的。