问题描述: 允许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个字符)。