Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-Regex:URL有一个参数_Javascript_Regex - Fatal编程技术网

JavaScript-Regex:URL有一个参数

JavaScript-Regex:URL有一个参数,javascript,regex,Javascript,Regex,我正在尝试为php的isset($\u GET[param])创建一个模拟,但是为JavaScript创建一个模拟。 再见,我明白了 [?&]param[&=] 但如果param位于URL的末尾(example.com?param),则此正则表达式将不起作用。 你可以在这里玩:如果你想确保你的比赛以&,=或字符串结尾结束,你可以用一个(?:[&=].$)替代组来替换&,=或字符串结尾(请注意,$不能放在字符类中,因为它将失去其特殊意义,并将被视为$符号),或者您可以使用负前瞻(

我正在尝试为php的
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(?![^&=])