作者:87年的第一场雪 | 来源:互联网 | 2023-05-19 07:37
我是新手,再次求助一个正则表达式,如下:验证输入:6-14个字符,大小写字母和数字,但不能全由字母或数字构成,必须是字母和数字的组合那位大哥能帮帮我,非常感谢!
我是新手,再次求助一个正则表达式,如下:
验证输入:6-14个字符,大小写字母和数字,但不能全由字母或数字构成,必须是字母和数字的组合
那位大哥能帮帮我,非常感谢!
19 个解决方案
--可以使用两个正则表达式来进行验证.
a."\w{6,14}"
验证字符的长度在6-14之间
b."\w+\d*[a-z]*\w+"
验证字母和数字的组合.
不能用\w,它等价于[A-Za-z0-9_],包括下划线
try (in .NET)
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{6,14}$
应该进行三次匹配计算
第一次匹配6-14个字符的字串
第二次检查是否匹配全是数字
第三次检查是否匹配全是字母
匹配([A-Za-z]|\d){6,14}
但不匹配:[A-Za-z]{6,14}和\d{6,14}
测试了saucer(思归)的结果,是正确的。能否讲一下问号的使用呢,对它一直比较不敢使用。
http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/cpgenref/html/cpconGroupingConstructs.asp
感谢大家的热心,测试了saucer(思归)的结果:当出现 12345abc 这种情况时通不过,能否在^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{6,14}$ 的基础上加以修改,以适应所有情况呢?
我这样用时:
Regex r;
r = new Regex("^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{6,14}$");
系统会提示:Regist.aspx.cs(108): 无法识别的转义序列
噢。我这样用的
System.Text.RegularExpressions.Regex.IsMatch(input,pattern);
to:diffmaker(浮尘)
就是这样写:
System.Text.RegularExpressions.Regex.IsMatch("12345asdf","^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{6,14}$");
也还是会出现同样错误。
里面有反斜线,所以不能那样写。这样写
Regex.IsMatch("12345asdf",@"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{6,14}$")
在前面加一@
表达式:
(?![A-Za-z]{6,14}\b)(?!\d{6,14}\b)[A-Za-z\d]{6,14}\b
测试页面:(推荐)
http://www.regexlab.com/zh/workshop.asp?pat=%28%3F%21%5BA-Za-z%5D%7B6%2C14%7D%5Cb%29%28%3F%21%5Cd%7B6%2C14%7D%5Cb%29%5BA-Za-z%5Cd%5D%7B6%2C14%7D%5Cb&txt=a1%20%20%3C-%20no%0D%0A%0D%0A12345abc%20%20%3C-%20yes%0D%0A%0D%0A12345678%20%20%3C-%20no%0D%0A%0D%0Aabcdefgh%20%20%3C-%20no%0D%0A%0D%0A1234567890123a%20%20%3C-%20yes&dlt=0
思路:
采用正向预搜索功能(也叫正向零宽度断言)
参考:
http://www.regexlab.com/zh/regref.htm