现在,我有这段代码:
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
答案 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);