js中,看看这个正则怎么匹配?

发布于 2022-09-06 20:59:46 字数 302 浏览 8 评论 0

http://localhost:9000/detail.html?p=111&cat=222

我想通过一个正则,匹配到这个网址中的111,注意,只能是111
(注:p这个字段只能含有数字)
我写的正则是这样的

p=\d+(?=[&])

这样匹配到的结果是

p=111

我想把p=给去掉,也就是我不希望匹配到这个东西,怎么办?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

很酷又爱笑 2022-09-13 20:59:47

楼上的正则表达式只对你这一个例子适用,更具体的讲,它只在路由参数只有两个并且 p 是第一个的情况下适用。

js 里的正则是不支持判断“前面是 p=”这种条件的,所以要让结果完全只有 111 没有 p= 出现是不可能的。
但是有一种替代方案,只需要将你原来的正则稍微修改一点就可以实现:

url.match(/p=(\d+)(?=[&$])/);
// ["p=111", "111"]

这个数组的第二项就是你想要的东西。
这个正则表达式中,(\d+) 的括号会将括住的部分放进返回结果里。
另外注意我将你的 (?=[&]) 补充成了 (?=[&$]),这是要考虑 p 是最后一个参数的情况

希望对你有帮助

┊风居住的梦幻卍 2022-09-13 20:59:47
'http://localhost:9000/detail.html?p=111&cat=222'.match(/(?!p=)\d+(?=\&)/g);
//["111"]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文