我想我录入一个字符串的时候, 不允许录入的值是相同的ASCII。 也就是AAAAA  BBBB  CCC DDD EEE 同时我还希望录入的字符串ASCII不能顺序出现  例如 ABCDEFG  abcdef   hijkl    opqrst   //检测正整数 是这样弄。   
    function testNum(str) {
        var myReg = /^[1-9]\d*$/;
        if (myReg.test(str)) return true;
        return false;
    }----------------------那么我需要验证字串里的字符ASCII码不能是相同的或是顺序的,JS 如何写? 告诉我吧!

解决方案 »

  1.   

    //这里是任何连个字符都不能重复或相邻,若需求不同,方法类似
    function v(str) {
    var FLAG = true;
    var lastCharCode;
    if (str.length > 1) {
    for (var i = 1; i < str.length; i ++) {
    if (str.charCodeAt(i) == str.charCodeAt(i - 1) || str.charCodeAt(i) == str.charCodeAt(i - 1) + 1) {
    FLAG = false;
    break;
    }
    }
    }
    return FLAG;
    }
    alert(v('ABC'));  //false
    alert(v('AAA'));  //false
    alert(v('ace'));  //true
      

  2.   

    上边的我马上测试了一下。 如何办?ABCDEF  没问题,正确
    ABCDEFG 就不对了哟123456 也不正确AAAAAA 也不正确。
    如何办?   
      

  3.   

    我自己弄了一个, 测试前五个字符,只要有四个相同,或者相邻,就返回 TRUE多谢上边的代码, 我修改了测试通过 //这里是任何连个字符都不能重复或相邻,若需求不同,方法类似
        function chkstr(str) {
            var FLAG = false;
            var lastCharCode;
            len = str.length;
            i = 1;
            count = 0;
            countb = 0;
            str1 = str.substr(0,1);
            while (i<=5) {
                str2 = str.substr(i,1);
                if (str1 == str2) {
                    count++;
                    if (count >= 3) {
                        FLAG = true;
                        break;
                    }
                }
                else {
                    count = 0;
                }
                if (str1.charCodeAt()+1 == str2.charCodeAt()) {
                    countb++;
                    if (countb >= 3) {
                        FLAG = true;
                        break;
                    }
                }
                else
                {
                    countb=0;
                }
                str1= str2;
                i++;
            }
        
            return FLAG;
        }
      

  4.   

    function test(a){
    var re=true;
    var b=a.split("");
    b.sort();
    for(var i=0;i<b.length-1;i++){
    if(b[i]==b[i+1]){
    re=false;
    }
    }
    b=b.join("");
    if(a==b){
    re=false;
    }
    return re;
    }
    这样试试  不是很明白你的意思  像这样abcf算吗? 或者babc算吗  实在不行将字符串转换成数组后挨个比较吧  
      

  5.   

    这你要想一个好的算法,先专门做一个字符ASCII码相同的判断,然后是顺序,用正则表达式是实现不了的。个人想法。