String pattStr = "(01,|02,|03,|04,|05,|06,|07,|08,|09,|10,|11,){4}+(01|02|03|04|05|06|07|08|09|10|11){1}";
这是我java的写法,js也要实现同样的功能,写不来,望高手帮忙写个,感激不尽!
大体意思是有5字符串,前4个必须在01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11,中选择4个
结尾1个字符串 必须在01 02 03 04 05 06 07 08 09 10 11中选择一个

解决方案 »

  1.   


    var reg=/^(01,|02,|03,|04,|05,|06,|07,|08,|09,|10,|11,){4}.*(01|02|03|04|05|06|07|08|09|10|11)$/gi
      

  2.   


    var reg = /^(01,|02,|03,|04,|05,|06,|07,|08,|09,|10,|11,){4}(01|02|03|04|05|06|07|08|09|10|11)$/;
    alert(reg.test("01,02,03,04,11"));
    alert(reg.test("01,01,01,01,01"));
    alert(reg.test("00,11,23,43,01"));
      

  3.   


    如果你要得到不同的组合 那就别用正则了啊 function getRandom(min,max){
    return parseInt(Math.random()*(max-min+1));
    } var arrStr = "01,02,03,04,05,06,07,08,09,10,11";
    var str = "";
    for(var i=0;i<5;i++){
    var arr = arrStr.split(",");
    var tmp = arr[getRandom(0,arr.length-1)];
    str = str + tmp + ","
    arrStr = arrStr.replace(tmp,"").replace(/,+/g,",").replace(/(^\s*,\s*)|(\s*,\s*$)/g,"");
    }
    str = str.substring(0,str.length-1);
    alert(str);
    这不就可以
      

  4.   

    要达到你的目的,我用一个正则搞不定,这里用了两个,第一个判断是否有重复,第二个判断是否符合格式var reg1=/(\d{2}).*\1/gi,
    reg2=/^(01,|02,|03,|04,|05,|06,|07,|08,|09,|10,|11,){4}.*(01|02|03|04|05|06|07|08|09|10|11)$/gi,
    var s='01,02,03,04,04';
    alert(!reg1.test(s)&&reg2.test(s));
      

  5.   

    稍做修改,把reg1改为:reg1=/(01|02|03|04|05|06|07|08|09|10|11).*\1/gi;//只限于(01|02|03|04|05|06|07|08|09|10|11)中的一个
      

  6.   

    var reg = /(?:(?:^|,)(0[1-9]|1[01])(?!.+\1)){5}$/;
    var str1 = "01,02,03,04,05";
    alert(reg.test(str1));  // true
    var str2 = "01,02,03,04,02";
    alert(reg.test(str2)); //false