好久没提问题了,问个正则表达式,请指教:请输入您的爱好:
A、足球  B、乒乓球  C、篮球  D、羽毛球
如上,我要对用户输入的答案做有效性验证,现在我做到的是判断用户输入的是4位以内,A至D。正则如下:
/^[a-dA-D]{1,4}$/但如何判断重复?比如:AAD、ADDD、AABB...这些都应是非法
感谢回复。

解决方案 »

  1.   

    是让用户选择还是给一个textBox让用户填如果是用户选择,那根本不可能出现重复的情况
      

  2.   

    呵呵,不管牛不牛刀,先给个正则正再说^o^/^(?!.*?([a-dA-D]).*?\1)[a-dA-D]{1,4}$/弱弱的说,不知道js里是否支持反向引用,楼主试下吧
      

  3.   

    呵呵,不管牛不牛刀,先给个正则正再说^o^/^(?!.*?([a-dA-D]).*?\1)[a-dA-D]{1,4}$/弱弱的说,不知道js里是否支持反向引用,楼主试下吧
    -------------试下,JS里是支持反向引用的:)
      

  4.   

    说说你必须用正则的理由~
    --------------
    请输入您的爱好(按兴趣大小从左至右排序):
    A、足球  B、乒乓球  C、篮球  D、羽毛球
      

  5.   

    能解决问题就OK,管你用什么方法,而且老板也不会看。
    ~~哈,正则过客最近都没坐SF了~~
      

  6.   


    /*
    好久没提问题了,问个正则表达式,请指教: 请输入您的爱好: 
    A、足球     B、乒乓球     C、篮球     D、羽毛球 
    如上,我要对用户输入的答案做有效性验证,现在我做到的是判断用户输入的是4位以内,A至D。正则如下: 
    /^[a-dA-D]{1,4}$/ 但如何判断重复?比如:AAD、ADDD、AABB...这些都应是非法 */import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test{
    public static void main(String[] args){
    String str = "aa";
    //经过测试对应各种情况都OK if(check(str)){
    System.out.println("'" + str + "' is valid!");
    }else{
    System.out.println("'" + str + "' is not valid!");
    } } private static boolean check(String str){
    str = str.toLowerCase();
    String regex = "([a-d])((?!\\1)([a-d])((?!\\2|\\1)([a-d])((?!\\1|\\2|\\3)([a-d]))?)?)?";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);
    return matcher.matches();
    }
    }