Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 正则表达式匹配URL参数_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式匹配URL参数

Javascript 正则表达式匹配URL参数,javascript,regex,Javascript,Regex,给定以下两个字符串 ?room=any_characters123&name=John ?room=any_characters123 我想用正则表达式提取“任意字符123” 我试过了 (?<=room=)(\w)+(?=\&) (?如果您使用的是JS,则不支持lookback。您可以按如下方式修改正则表达式: room=([^&]+) 如果您使用的是JS,则不支持lookbehind。您可以按如下方式修改正则表达式: room=([^&]+) 尝

给定以下两个字符串

?room=any_characters123&name=John

?room=any_characters123
我想用正则表达式提取“任意字符123”

我试过了

(?<=room=)(\w)+(?=\&)

(?如果您使用的是JS,则不支持lookback。您可以按如下方式修改正则表达式:

room=([^&]+)

如果您使用的是JS,则不支持lookbehind。您可以按如下方式修改正则表达式:

room=([^&]+)

尝试将
*
放在表达式的末尾:

room=(\w+)\&*?

它将测试
&

的零或正频率,尝试将
*
放在表达式的末尾:

room=(\w+)\&*?

它将测试
&

的零或正出现率,因为javascript不支持lookbehind,所以您需要使用捕获组

\?room=(\w+)
示例:

> var s = "?room=any_characters123&name=John"
> var s1 = "?room=any_characters123"
undefined
> var re = /\?room=(\w+)/;
undefined
> console.log(re.exec(s)[1])
any_characters123
undefined
> console.log(re.exec(s1)[1])
any_characters123

因为javascript不支持lookbehinds,所以需要使用捕获组

\?room=(\w+)
示例:

> var s = "?room=any_characters123&name=John"
> var s1 = "?room=any_characters123"
undefined
> var re = /\?room=(\w+)/;
undefined
> console.log(re.exec(s)[1])
any_characters123
undefined
> console.log(re.exec(s1)[1])
any_characters123

这应该可以做到:

/room=(\w+)&?/
/*
    find "room=" then match any word characters (at least one) until you
    possibly hit "&"
*/
例如:

/room=(\w+)&?/.test("?room=any_characters123")
// => true
"?room=any_characters123".match(/room=(\w+)&?/)
// => ["room=any_characters123", "any_characters123"]

这应该可以做到:

/room=(\w+)&?/
/*
    find "room=" then match any word characters (at least one) until you
    possibly hit "&"
*/
例如:

/room=(\w+)&?/.test("?room=any_characters123")
// => true
"?room=any_characters123".match(/room=(\w+)&?/)
// => ["room=any_characters123", "any_characters123"]

通过两个正则表达式测试运行字符串,一个是您已有的测试,然后是此测试:

(?<=room=)(\w){1,}$

(?通过两个正则表达式测试运行字符串,一个是您已有的,然后是这个:

(?<=room=)(\w){1,}$

(?令人惊讶的是,这个最古老的正确答案仍然没有投票权+1令人惊讶的是,这个最古老的正确答案仍然没有投票权+1