如题,必须用正则,其他方式请勿讨论正则表达式正则javascript

解决方案 »

  1.   

    基本算法,并非牛人。/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/
    alert(/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test("123321"));alert(/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test("12321"));
      

  2.   

    Test:<script type=text/javascript>
    var i = 0, symmetrical = [],
    arr = ["123321", "12321", "1233321", "123421", "12332", "456654", "78987"];while(arr[i++]) {
        /^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test(arr[i-1]) && symmetrical.push(arr[i-1]);
    }alert("上面数字字符串集合中对称的有:\n" + symmetrical.join("\n"))
    </script>
      

  3.   

    牛人啊;
    不过貌似对对称数的长度有限制啊最多六位,应该是和你的(\d)(\d)(\d)\3?\2\1这个是写死的有关系,如"1234321"就验证不出来,能改进下就完美了
      

  4.   

    /^(?!.*_)(\d)(\d)(\d)\3?\2\1$/(?!.*_)是什么意思
      

  5.   

    这样好了function asdsa(a)
    {
    return new RegExp("^\\d{"+Math.ceil(a.length/2)+"}"+a.slice(0,Math.floor(a.length/2)).split("").reverse().join("")+"$").test(a);
    }
    alert(asdsa("1234567654321"));
      

  6.   


    直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则
      

  7.   


    直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则
    因为
    所以
      

  8.   


    直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则
    因为
    所以++++++++++++
      

  9.   

    看来用正则是行不通,什么方式简单就用什么方式吧,我自己也写出了一个比较好的方式,拿出来给大家看看吧,  function isSymmetrical(str){
    return str == str.split("").reverse().join("");
      }