<html>
<body>
<form name="data">
  <input type=text name=A1 value=1 />
  <input type=text name=A2 value=2 />
  <input type=text name=A3 value=3 />
  <input type=text name=A4 value=4 />
</form>
</body>
</html>
<script language=javascript>
var elements = document.data.elements;
var str = "";
for (var i = 0; i < elements.length; i++) {
  var ele = elements[i];
var reg = /A\d+/g;   ////////this is a regex    把这一句加在循环中
  if (reg.test(ele.name)) {
    if (str == "") {
      str = str + ele.name + "=" + ele.value;
    } else {
      str = str + "&" + ele.name + "=" + ele.value;
    }
  }
}
alert(str);
</script>

解决方案 »

  1.   

    for (var i = 0; i < elements.length; i++) {
      var ele = elements[i];
      if (/A\d+/g.test(ele.name)) {
        if (str == "") {
          str = str + ele.name + "=" + ele.value;
        } else {
          str = str + "&" + ele.name + "=" + ele.value;
        }
      }
      

  2.   

    这个问题我知道解决办法,但想知道why.为什么会出现中间test=false的问题,而且是很规律的隔一个出现一次.
    谢谢尖刀和vivian的意见
      

  3.   

    加了全局参数g的正则,每次test,将跟随上次的搜索位置继续搜索下去,只到搜索到文本结束才会将搜索起始位置置为0所以偶数次test执行将使搜索紧接着上次RegExp.lastIndex继续搜索下去,显然这时没有匹配了,因为index指向2,即字符串的结尾。一旦达到结尾,RegExp对象将复位。于是再下次搜索又从index=0开始。所以奇数次有效,偶数次无效,因为偶数次是紧接着奇数次继续搜索的(这都是g的作用)。
      

  4.   

    多谢kangel解惑,也谢谢尖刀和vivian的热心帮助:)