http://localhost:9000/detail.html?p=111&cat=222我想通过一个正则,匹配到这个网址中的111,注意,只能是111(注:p这个字段只能含有数字)我写的正则是这样的p=\d+(?=[&])这样匹配到的结果是p=111我想把p=给去掉,也就是我不希望匹配到这个东西,怎么办?
2 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
楼上的正则表达式只对你这一个例子适用,更具体的讲,它只在路由参数只有两个并且 p 是第一个的情况下适用。
js 里的正则是不支持判断“前面是 p=”这种条件的,所以要让结果完全只有 111 没有 p= 出现是不可能的。
但是有一种替代方案,只需要将你原来的正则稍微修改一点就可以实现:
url.match(/p=(\d+)(?=[&$])/);
// ["p=111", "111"]
这个数组的第二项就是你想要的东西。
这个正则表达式中,(\d+) 的括号会将括住的部分放进返回结果里。
另外注意我将你的 (?=[&]) 补充成了 (?=[&$]),这是要考虑 p 是最后一个参数的情况
希望对你有帮助
慕雪6442864
TA贡献1812条经验 获得超5个赞
'http://localhost:9000/detail.html?p=111&cat=222'.match(/(?!p=)\d+(?=\&)/g);
//["111"]
添加回答
举报
0/150
提交
取消