【问题标题】:How to match a number in an url value pair如何匹配 url 值对中的数字
【发布时间】:2012-03-05 11:03:42
【问题描述】:

我正在编写一个 Javascript 函数。我需要从以下变量中获取数字 228

var cancelURL = "artGallery.cgi?productid=228&key=photo&resultsC=20";

有人可以告诉我如何编写正则表达式模式来搜索值对中的数字吗?

【问题讨论】:

标签: javascript regex


【解决方案1】:

使用下面的正则表达式匹配整个url,然后在匹配的内容中查找名为parvalue的组,分别匹配=后面的参数和对应值:

[^?]+\?(\&?(?<par>\w+)=(?<value>\w+))+

这是一个通用的解决方案,但也解决了寻找productid参数的具体问题。

【讨论】:

  • 我也会测试一下。谢谢新浪。
【解决方案2】:
var n = (cancelURL.match(/(?:\?|&)productid=(\d+)/) || [null,null])[1];

alert(n);

【讨论】:

  • 考虑到可能存在另一个变量,例如 mproductid 或者该值有可能为空,因此建议:var s = (cancelURL.match(/(\?|&amp;)productid=(\d*)/) || ['','',''])[2];
  • 应该是 n = etc. 而不是 s = etc. 抱歉。
  • @inhan:好主意。更新。我所做的唯一更改是使该组成为非捕获组。
【解决方案3】:

如果您一直在寻找productid,您可以使用/productid=([^&amp;]*)/i 作为您的正则表达式。这将抓取= 之后和下一个&amp; 之前的所有内容。

【讨论】:

  • 上一个答案对我有用,非常感谢您的评论,并确保对其进行测试。谢谢。
猜你喜欢
  • 2019-02-13
  • 2012-01-22
  • 2021-07-01
  • 2014-03-27
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多