需要验证一个编码,但是编码由字母、数字和下划线组成或横线组成,期中下划线和横线不能在第一位和最后一位,谢谢大神们了

解决方案 »

  1.   

    上个帖子不是回复你了么?你到底有啥不满意?
    <script language="javascript">
    var reg = /^[^_\-](\w|\-)*[^_\-]$/;
    var str1 = "aba-_1212-_34";
    var str2 = "aba34";
    var str3 = "aba 34";
    var str4 = "-aba-_1212-_34";
    var str5 = "aba-_1212-_34_";
    alert(str1 + ": " + reg.test(str1) + "\n"
     + str2 + ": " + reg.test(str2) + "\n"
     + str3 + ": " + reg.test(str3) + "\n"
     + str4 + ": " + reg.test(str4) + "\n"
     + str5 + ": " + reg.test(str5) + "\n"
    );
    </script>
      

  2.   

    这个不行,我是在java里面写的
      

  3.   

    Java也一样的,修改下就行了:String reg = "^[^_\\-](\\w|\\-)*[^_\\-]$";
    String str1 = "aba-_1212-_34";
    str1.matches(reg);
      

  4.   

    试试这个,不知道能否满足你的要求: public static void main(String[] args) {
    String s = "aba-_1212-_34";
    Pattern p = Pattern.compile("[^_,^-](\\w|_|-)*[^_,^-]");
    Matcher m = p.matcher(s);
    System.out.println(m.matches());
    }
      

  5.   


    不好意思,大意了,可以改为:
            String reg = "^([^_\\-](\\w|\\-)*[^_\\-])|[^_\\-]$";
            String str1 = "aba-_1212-_34";
            String str2 = "a";
            String str3 = "_";
            String str4 = "aa";
            String str5 = "a_";
            String str6 = "-";
            System.out.println(str1.matches(reg));
            System.out.println(str2.matches(reg));
            System.out.println(str3.matches(reg));
            System.out.println(str4.matches(reg));
            System.out.println(str5.matches(reg));
            System.out.println(str6.matches(reg));
      

  6.   

    soga,不能用非运算。String reg = "^([^_\\-](\\w|\\-)*[^_\\-])|[A-Za-z0-9]$";
      

  7.   

    惭愧惭愧,还是非运算惹得祸:String reg = "^([A-Za-z0-9](\\w|\\-)*)?[A-Za-z0-9]$";