【发布时间】:2016-05-30 05:55:01
【问题描述】:
我的 WebAPI 中有两个 get 方法,它们是:
CheckPassword(string Password, string regExp)//验证密码模式,接受密码和正则表达式。CheckEmailValid(string Email, string regExp)//验证电子邮件模式,获取电子邮件及其正则表达式。
当我尝试通过使用控制台应用程序传递两个字符串(密码、正则表达式)或(电子邮件、正则表达式)来调用 WebAPI 中的 Get 方法时,字符串中的某些字符会丢失。但同时,如果我的 WebAPI 中有正则表达式并进行测试,它就可以正常工作。所以我错过了应用程序和 webAPI 之间的一些字符。
密码的原始正则表达式字符串
public const string passwordPattern = @"^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z]{7,}$";
调试时在 WebAPI 方法中收到的字符串
{^(?=.*[0-9] .*)(?=.*[a-zA-Z] .*)[0-9a-zA-Z]{7,}$}
这里我错过了 + 符号,这就是为什么密码验证总是失败的原因。
电子邮件的原始正则表达式字符串
public const string emailPattern = @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z";
我在调试时在 WebAPI 方法中收到的字符串
\\A(?:[a-z0-9!
任何帮助将不胜感激。
【问题讨论】:
-
第一个
^(?=.*[0-9])(?=.*[a-zA-Z])[0-9a-zA-Z]{7,}$就足够了 -
至少取一个大写字母。但如果没有大写字母则接受
-
在这种情况下使用:-
^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[0-9a-zA-Z]{7,}$..至少一个大写,一个小写和一个数字 -
虽然正则表达式确实不需要任何
+量词,但有趣的是,如果+量词是 是必要的,该怎么做。我认为您的代码中有一些 Uri 转义。否则,它可以作为stackoverflow.com/questions/1559751/…的欺骗关闭
标签: asp.net regex string asp.net-web-api console-application