我要写一个字符串的正则表达式,要求如 "1,2,3,4,5,6,7"  里面只可以出现1-7数字,而且他们不可以重复,可出现1至7个数字,每个数字后面跟个逗号,最后一个不要,应该怎么写,请大家告知!谢谢

解决方案 »

  1.   

    以前的一个前辈回答的.
    为了处理完整的字符
    主要就是这个。。
    思路就是比如判断不重复的单数
    /^(?!.*(\d).*\1)\d+/ //下文叫它p1这个就是思路。。不过因为它有分割符号和开始结束符号,所以需要判断的多了一点/^\((?!(?:\d+[,)]|,\d+[,)])*(\d+)(?:,\d+(?=[,)]))*,\1[,)])\d+(?:,\d+)*\)$/.test(arguments[0]);
    拆分下。。判断重复
    (?!(?:\d+[,)]|,\d+[,)])*(\d+)(?:,\d+(?=[,)]))*,\1[,)])
    校验正确
    /^\(判断重复\d+(?:,\d+)*\)$/.test(arguments[0]);判断重复里
    (?:\d+[,)]|,\d+[,)])*
    这个好比
    p1里的开头那段.*
    (\d+)(?:,\d+(?=[,)]))*,\1[,)])
    这个好比p1里的(\d).*
    后面同理[,)]
    加这个主要就是为了检查字符完整。。
    否则会出现
    1,13
    这种bug
      

  2.   

    String regex="^(?:([1-7]),(?!.*\\1.*))*[1-7]$";
    帮忙找找这个正则的缺陷