var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
这个正则表达式怎么理解name
是个变量'(^|&)'
和'=([^&]*)(&|$)'
怎么理解?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这个正则表达式怎么理解name
是个变量'(^|&)'
和'=([^&]*)(&|$)'
怎么理解?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
(^|&)
中,^
表示以某个开头,&
通常出现在连接字符中。([^&]*)
其中[^&]*
表示匹配非&
的所有字符,*
表示这组规则的匹配会有0...N
次。(&|$)
分别表示,以后面有&
或者直接到结尾($
)用实际例子来解释,比如有字符串
a=1&b=2&c=3&d=4
,假设现在 name 是a
,带进去(^|&)a=([^&]*)(&|$)
,开始匹配,^a=
标识以a=
开头,这组匹配成功,继续下一组,([^&]*)
因为是匹配非&
字符,匹配到了1
后遇到了&
,下面开始,因为下一组(&|$)
中,&
匹配了,所以最终第二组返回1
。同理往后,设匹配 name 为
b
的时候,第一组先匹配^b=
不满足,因为 b= 前面还有一个&
字符所以匹配到了第二个条件,&b=
成立了重复如上最后匹配 d 的时候,前面的都和匹配 b 一样,但是最后不一样,因为 d 后面没有 & ,但是匹配到了
$
标识以结束了。除此之外还可以使用 URLSearchParams
直接用URLSearchParams就好了 没必要再正则截取了吧
var name='abc';
那么正则等于
/(^|&)abc=([^&]*)(&|$)/i
(^|&)abc=
要求已abc或者&开头
且之后必须有=
号,即开头要么是abc=
要么是&abc=
([^&]*)
这个捕获组捕获从=开始到&的任意字符,可以是空(&|$)
这个捕获组截止到&字符,或者结尾处.举例那么符合规则的字符有
看上去是截取URL参数?
第二个捕获组就是你想要的参数