JavaScript-Regex:URL有一个参数
我正在尝试为php的JavaScript-Regex:URL有一个参数,javascript,regex,Javascript,Regex,我正在尝试为php的isset($\u GET[param])创建一个模拟,但是为JavaScript创建一个模拟。 再见,我明白了 [?&]param[&=] 但如果param位于URL的末尾(example.com?param),则此正则表达式将不起作用。 你可以在这里玩:如果你想确保你的比赛以&,=或字符串结尾结束,你可以用一个(?:[&=].$)替代组来替换&,=或字符串结尾(请注意,$不能放在字符类中,因为它将失去其特殊意义,并将被视为$符号),或者您可以使用负前瞻(
isset($\u GET[param])
创建一个模拟,但是为JavaScript创建一个模拟。再见,我明白了
[?&]param[&=]
但如果param位于URL的末尾(example.com?param),则此正则表达式将不起作用。你可以在这里玩:如果你想确保你的比赛以
&
,=
或字符串结尾结束,你可以用一个(?:[&=].$)
替代组来替换&
,=
或字符串结尾(请注意,$
不能放在字符类中,因为它将失去其特殊意义,并将被视为$
符号),或者您可以使用负前瞻(?![^&=)
如果在当前位置之后没有&
或=
,则匹配失败,这可能比替换组的效率高一点
所以,在你的情况下,它看起来
[?&]param(?:[&=]|$)
或
见
JS演示:
var strs=[]http://example.com?param', 'http://example.com?param=123', 'http://example.com?param&another','http://example.com?params'];
变量rx=/[?&]参数(?![^&=])/;
用于(STR的var s){
控制台日志,“=>”,接收测试)
}
用(?:[&=]|$)
或(?![^&=])
替换[&=]
这个答案可能会帮助您:您不需要像[?&]param[&=]中那样,仅仅添加一个参数来进行[=&]可选?然后它匹配为什么不将整个查询字符串解析为一个对象,然后您就可以检查对象中是否有特定的键。@Quentin可能,因为它与所有浏览器不兼容?请注意[?&]param(?![^&=])
在regex101的多行测试中不起作用,但在单独测试字符串时,它在真正的JS代码中起作用。
[?&]param(?![^&=])