登录页面URL的正则表达式?

时间:2011-09-28 14:10:12

标签: c# .net asp.net regex vb.net

现在,我有这段代码:

string strURL = "aLogin.aspx?test=hello";
string strPattern = "(.*/)?Login.aspx(?.*)?";
bool bIsLoginPage = System.Text.RegularExpressions.Regex.IsMatch(strURL , strPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

我正在寻找正确的正则表达式模式,我感到很茫然。

模式必须符合这些标准

Login.aspx              ==> True
lOgIn.AsPx              ==> True
/Login.aspx             ==> True
whatever/Login.aspx     ==> True
whatever/lOgIn.aSpX     ==> True
WhAtEverLogin.aspx      ==> false
Login.aspxxxxxx         ==> false
Login.aspx?xyz=abc&etc  ==> true
Login.aspxxyz=abc&etc   ==> false
Login.aspx&xyz=abc&etc  ==> false

3 个答案:

答案 0 :(得分:2)

您如何看待这个?

^(.*[/])?login.aspx([?].*)?$

当然使用ignorecase。

答案 1 :(得分:1)

尝试string strPattern = "(^|.*/)Login.aspx($|\\?.*)";bResult = System.Text.RegularExpressions.Regex.IsMatch(strURL , strPattern, RegexOptions.IgnoreCase);

编辑:修复了丢失的转义序列

答案 2 :(得分:1)

你可以不用正则表达式:

var target = "Login.aspx";
strURL.Split('?').First().Split('/').Last().Equals(target, StringComparison.OrdinalIgnoreCase);