<script>var str = "a=1;b=ok;c=你好";
var key = "c";var reg = new RegExp(key + "=((.+?)(?=(;|$)))");
var x = reg.exec(str);alert(x[1])</script>

解决方案 »

  1.   

    1:可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 JScript:/^(?:Chapter|Section) [1-9][0-9]{0,1}$/2:
    (a)除了 '?:' 元字符,还有两个非捕获元字符用于称之为预查的匹配。
    (b)一个为正向预查,用 ?= 表示, 在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串。
    (c)一个为负向预查,用 '?!' 表示,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。例如,假定有一个包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文档。进一步假设需要更新该文档,方法是查找所有对 Windows 95、Windows 98 以及 Windows NT 的引用,并将这些引用更改为 Windows 2000。可以使用下面的 JScript 正则表达式,这是一个正向预查,来匹配 Windows 95、Windows 98 以及 Windows NT:/Windows(?=95 |98 |NT )/
    在 VBScript 要进行同样的匹配可以使用下述表达式:"Windows(?=95 |98 |NT )"
    找到一个匹配后,紧接匹配到的文字(而不包括预查中使用的字符)就开始对下一次匹配的搜索。例如,如果上面所示的表达式匹配到 'Windows 98',则将从 'Windows' 而不是 '98' 之后继续查找。
      

  2.   

    var reg = new RegExp(key + "=(.+?)(;|$)");这样就可以了,谢谢
      

  3.   

    我也想帮你。
    <script>var str = "a=1;b=ok;c=你好";
    var key = "b";
    var str=";"+str+";"
    v=eval("str.replace(/(.*);"+key+"=(.+?);(.*)/g,'$2')")
    alert(v)
    </script>