啊,幸好我在这样的日子里不发工资。我从我的客户端Javascript复制了一些正则表达式模式到服务器端ASP,电子邮件模式没有问题,但是密码模式的相同功能今天花费了我的老板6个小时(我们的小秘密)。
Function validatePassword(strPass)
Dim regEx
Set regEx = new RegExp
regEx.IgnoreCase = false
regEx.global = false
regEx.Pattern = "^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10}$"
ValidatePassword = regEx.Test(strPass)
End Function这是一个简单的1个大写,1个小写,1个数字,6-10个字符的模式,毫无疑问,它应该匹配,但ex。3DMM9igggg返回false,但gDMM9igggg返回true。它在JS中工作得很好,在这里:http://www.regular-expressions.info/javascriptexample.html,以及我尝试过的其他几个测试程序。
见鬼?谁能把他们的眼睛借给我用一下?
谢谢
发布于 2011-11-18 04:01:56
这可能是因为您的特定ASP正则表达式引擎不像javascript引擎那样支持lookahead。这是一些引擎的情况,根据此链接上高级主题下的第4段:http://msdn.microsoft.com/en-us/library/ms972966.aspx#regexnet_topic13
在第五段中还有一个基于lookahead的密码测试的例子。
如果问题确实出在引擎上,一个简单但低效的解决方案是运行3个测试:一个测试上端,一个下端,一个包含长度测试的数字。
https://stackoverflow.com/questions/8173392
复制相似问题