^[!-~]{1,20}$请教一下,这条正则意思是?

解决方案 »

  1.   

    [] 字符组,支持用连字符“-”连接两个字符,来表示一个字符范围。需要注意的是,“-”前后的两个字符是有顺序的,即使用相同的编码时,后面的字符码位应大于或等于前面字符的码位。//我不太清楚Java中怎么写下面的代码,我用的是C#的语法
    for (int i = '!'; i <= '~'; i++)
    {
        richTextBox2.Text += (char)i + " ";
    }
    /*--------输出--------
    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 
    */楼主所给正则的意思,也就是由以上输出字符组成的字符串,长度为1到20位
      

  2.   

    呵呵当“-”位于“[ ]”的两侧时仅表示普通的“-”字符,位于“[ ]”字符中时表示“到”的意思。在 Java 中是以 Unicode 大小来算的,比如:[a-f] 表示 a, b, c, d, e, f 这六个字符当中的任何一个,如果“-”后的字符 Unicode 码大于之前字符的话,比如写成这样“[f-a]”,那么会在运行时抛出正则表达式编译异常。位于“[ ]”中的字符串表示其中的 1 个字符。楼主所示表达式的意思是:匹配位 ! 与 ~ 之间的任何一个字符(包含 ! 和 ~)所组成的字符串,其字符数最小是 1 个,最多是 20 个。