问题描述:  允许1到6个英文字符或数字,按OK结束

有效等价类: 长度:1到6

                 字符:a-z,A-Z,0-9

无效等价类: 长度:0,7

                 字符:英文/数字以外字符,控制字符,标点符号

可得出:

有效等价类 无效等价类
length:1-6             length: ..-0&&7-..    
char:  a-z&&A-Z&&0-9 char:    others

所采用的测试用例及结果:

测试用例                       测试结果                       
0 有效
a 有效
Z 有效
9 有效
aA90 有效
ababab   有效
9a2b7c 有效
MMMMMM 有效
bbbbbb 有效
12 有效
123 有效
1234 有效
12345 有效
123456 有效
1234567 无效
abcdefg 无效
akbuGG 有效
无效
**** 无效
KGHGGGGG 无效
1k2M3 有效
  无效

 

 

 

编程测试实现关键代码为:

 1 <html>
 2 
 3 <head>
 4 <script type="text/javascript">
 5 function equalTest(){
 6    var name = document.getElementById('name').value;
 7    if(name == null)
 8    {
 9         window.alert("用户名不可为空");
10    }
11    else
12    {
13         var nLen=name.length;
14         reg=/^[a-zA-Z0-9_]+$/; 
15        
16         if(nLen<1||nLen>6)
17         {
18             window.alert("非法")
19         }
20         else if(!reg.test(name))          
21         {
22             window.alert("非法");
23         } 
24         else return;
25    }
26 }
27 </script>
28 </head>
29 
30 <body>
31 <input type="text" id="name" /><br/>
32 <input type="button" onclick="equalTest()" value="确定" />
33 </body>
34 
35 </html>

 

PS:在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字

    要做更精确地匹配,可以用[]表示范围,比如:

  • [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;

  • [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100''0_Z''Py3000'等等;

  • [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;

  • [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。