正则表达式找到所有以=开头的字符串并以&结尾

ano*_*non 11 javascript regex

我需要在大量的文本中找到=和&符号之间的所有字符串.我不希望结果字符串包含=和&,只是它们之间是什么.

Reg*_*ent 14

如果你的正则表达式引擎支持lookbehinds/lookaheads:

(?<==).*?(?=&)
Run Code Online (Sandbox Code Playgroud)

否则使用这个:

=(.*?)&
Run Code Online (Sandbox Code Playgroud)

捕获捕获组1.

如果您正则表达式引擎不支持非贪婪的匹配替换.*?使用[^&]*.


但正如zzzzBov在评论中提到的,如果你正在解析GETURL前缀,通常有更好的本地方法来解析GET参数.

例如,在PHP中会有:

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>
Run Code Online (Sandbox Code Playgroud)

(在php.net上找到.)

编辑:显示您正在使用Javascript.

用于将查询字符串解析为对象的Javascript解决方案:

var queryString = {};
anchor.href.replace(
    new RegExp("([^?=&]+)(=([^&]*))?", "g"),
    function($0, $1, $2, $3) { queryString[$1] = $3; }
);
Run Code Online (Sandbox Code Playgroud)

资料来源:http://stevenbenner.com/2010/03/javascript-regex-trick-parse-a-query-string-into-an-object/