从URL提取客户/订单号的正则表达式

问题描述 投票:1回答:3

我希望正则表达式大师可以帮助解决我的问题,

我想搜索以下URL's来提取某些数据:

  • /#!/customers/2848060/orders/9234573/history 我想要一个正则表达式函数来提取'customers'字符串(2848060)之后的数字。 我想要另一个正则表达式来提取'orders' (9234573)这个词之后的数字。

任何帮助都将受到大力赞赏。

javascript regex string url trim
3个回答
1
投票

我想要一个正则表达式函数来提取'customers'字符串后面的数字(2848060)

使用捕获组

对于客户/customers\/(\d+)/

var matches = "/#!/customers/2848060/orders/9234573/history".match( /customers\/(\d+)/ );
if (matches)
{
   console.log( "customers " + matches[1] );
}

我想要另一个正则表达式来提取“订单”(9234573)之后的数字。

同样的订单/orders\/(\d+)/

此外,如果URL模式可能相同,则可能不需要正则表达式

var items = str.split( "/" );
var customers = items[4];
var orders = items[6];

1
投票

我想要一个正则表达式函数来提取'customers'字符串后面的数字(2848060)。

/(?<=customers\/)(.*)(?=\/orders)/g

我想要另一个正则表达式来提取“订单”(9234573)之后的数字。

/(?<=orders\/)(.*)(?=\/history)/g

以下是测试片段

var str = '/#!/customers/2848060/orders/9234573/history'

var customer = str.match(/(?<=customers\/)(.*)(?=\/orders)/g)[0]
var order = str.match(/(?<=orders\/)(.*)(?=\/history)/g)[0]

console.log(customer);
console.log(order);

替代方案

我想要一个正则表达式函数来提取'customers'字符串后面的数字(2848060)。

/customers\/(.*)\/orders/

我想要另一个正则表达式来提取“订单”(9234573)之后的数字。

/orders\/(.*)\/history/

以下是测试片段

var str = '/#!/customers/2848060/orders/9234573/history'

var customer = str.match(/customers\/(.*)\/orders/)[1]
var order = str.match(/orders\/(.*)\/history/)[1]

console.log(customer);
console.log(order);

0
投票
var r = /\d+/g;
var s = "/#!/customers/2848060/orders/9234573/history";
var m;
while ((m = r.exec(s)) != null) {
  alert(m[0]);
}
© www.soinside.com 2019 - 2024. All rights reserved.