四位字符串:1989查找这个字符串是否有重数,如果有重数是几位。比如:1989,是有99是重数,一共2位。比如:2722,有重数是222,一共3位0008也是重数是000,一共3位。。

解决方案 »

  1.   

    function alert(x) {
    WScript.Echo(x + "");
    }
    function test(n) {
    n = new String(n);
    var reg = /(\d).*\1/;
    var res = [];
    while (reg.test(n)) {
    var $1 = RegExp.$1;
    var t = n.match(new RegExp($1, "g")).join("");
    res.push(t + "---------" + t.length + "位");
    n = n.split($1).join("");
    }
    if (res.length > 0) {
    alert("有重数\n" + res.join("\n"));
    } else {
    alert("无重数");
    }
    }
    test("19889");
      

  2.   

    请问大哥。RegExp.$1是什么意思啊
      

  3.   

    L@_@K<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <meta name="generator" content="editplus" />
      <meta name="author" content="" />
      <meta name="keywords" content="" />
      <meta name="description" content="" />
     </head> <body>
      <script type="text/javascript">
      <!--
    var str = "2233";
    var arr = str.split("");
    var result = {
    isRepeated: false,
    repeatedNumList: {}
    };
    var r;
    for (var i=0; i<arr.length; i++)
    {
    if (str.indexOf(arr[i]) < i) continue; re = new RegExp(arr[i],"g"); r = str.match(re); if (r.length > 1)
    {
    result.isRepeated = true;
    result.repeatedNumList[arr[i]] = r.length;
    }
    }var s = "无重数";
    if (result.isRepeated)
    {
    s = "有重数";
    for(var p in result.repeatedNumList)
    s += "\n" + p + ": " + result.repeatedNumList[p] + "次";
    }alert(s);
      //-->
      </script>
     </body>
    </html>