问题描述
在开发中有这样一个需求:
从 f/personal_center.html?pc=true#menu=myShopList
这类链接中获取 #menu=xxxx
这一串字符串,要求:
1.必须在 #
后的 menu=xxx
才可以获取
2.获取 menu=xxx
这种模式,末尾由 &
拼接的其他参数不获取
问题出现的环境背景及自己尝试过哪些方法
根据以上需求,我自己写了/(?<=(#\S*))&?menu=[^&]*/
这个正则进行获取,在本机和多台机子上都可以使用,但有个别电脑无法识别改正则表达式,报错显示“无效正则表达式”。这部分电脑将(?<=(#\S*))
中的?
变为\?
掉就不会报错了,但这么修改后该正则的功能就变了。所以想询问大佬是什么问题会导致这种情况?
ps:在出问题的电脑上使用各大主流浏览器测试,都报错。
相关代码
测试用例:f/personal_center.html?pc=true#menu=myShopList
正则表达式:/(?<=(#\S*))&?menu=[^&]*/
望大佬解答
1.是什么问题导致这种情况?
2.是正则本身的问题?
3.若是正则的问题,如何修改?
js不支持负向零宽断言,只支持正向零宽断言。即js不支持
(?<exp)
但支持(?!exp)
如果只需要menu后的直接获取
#menu
后的就行了/#menu=([^&]+)/
分组1就是匹配的值可能明年就能支持了
https://github.com/tc39/propo...