正则表达式:从URL获取ID

时间:2012-02-24 03:10:36

标签: regex parsing url

在正则表达式中弄湿我的脚,我很难让这个工作起作用。

我有一个网址:

/ 800-鲜花INC-的 4124 / 18-roses-的 3123

其中4124是业务ID,3123是产品ID。

对我来说,困难的部分是创建捕获组。目前,我的正则表达式如下:

/(\d+)(?=/|$)/g

不幸的是,这只会选择商家ID,而不会返回产品ID。

非常感谢任何帮助,如果你提供正则表达式,我很乐意,如果你能提出一些解释

谢谢!

2 个答案:

答案 0 :(得分:2)

你的正则表达式很好,除非你使用/作为正则表达式分隔符,你需要在表达式中将其转义:

/(\d+)(?=\/|$)/g

或者,您可以使用不同的分隔符(例如@):

@(\d+)(?=/|$)@g

根据您使用的语言,它可能会以某种数组返回结果,或者可能存在'findAll'类型的方法,而不仅仅是'find'。

答案 1 :(得分:1)

mathematical.coffee是正确的:

 var data = '/800-Flowers-inc-4124/18-roses-3123';
        var myregexp = /(\d+)(?=\/|$)/g;
        var match = myregexp.exec(data);
        var result = "Matches:\n";
        while (match != null) {
            result += "match:" + match[0] + ',\n';
            match = myregexp.exec(data);
        }
        alert(result);