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

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

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

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

这样匹配到的结果是

p=111

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


守着星空守着你
浏览 490回答 2
2回答

临摹微笑

楼上的正则表达式只对你这一个例子适用,更具体的讲,它只在路由参数只有两个并且 p 是第一个的情况下适用。js 里的正则是不支持判断“前面是 p=”这种条件的,所以要让结果完全只有 111 没有 p= 出现是不可能的。但是有一种替代方案,只需要将你原来的正则稍微修改一点就可以实现:url.match(/p=(\d+)(?=[&$])/);// ["p=111", "111"]这个数组的第二项就是你想要的东西。这个正则表达式中,(\d+) 的括号会将括住的部分放进返回结果里。另外注意我将你的 (?=[&]) 补充成了 (?=[&$]),这是要考虑 p 是最后一个参数的情况希望对你有帮助

慕雪6442864

'http://localhost:9000/detail.html?p=111&cat=222'.match(/(?!p=)\d+(?=\&)/g);//["111"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript