为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着星空守着你 2019-03-14 14:15:56
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 是最后一个参数的情况


希望对你有帮助


查看完整回答
反对 回复 2019-03-22
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

'http://localhost:9000/detail.html?p=111&cat=222'.match(/(?!p=)\d+(?=\&)/g);

//["111"]


查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 489 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信