ASP.NET正则表达式问题

Joh*_*ohn 2 c# regex asp.net

我有一个正则表达式,在ASP.NET页面路由中用于URL重写时可以正常使用.

但是,当我尝试在我的ASP.NET代码中的其他地方使用它时,它允许过去我不想要它的字符串.

我的正则表达式是,

[-_a-zA-Z0-9/]+(\.aspx(\?.+)?)?
Run Code Online (Sandbox Code Playgroud)

这意味着允许字符串文件/路径没有扩展名或.aspx文件扩展名,但不允许文件/路径与其他扩展名,例如."whatever.js".

我在我的应用程序的其他地方使用它没有成功,就像这样......

if (Regex.IsMatch(pageUrl, @"[-_a-zA-Z0-9/]+(\.aspx(\?.+)?)?"))
Run Code Online (Sandbox Code Playgroud)

似乎作为字符串匹配的一部分,它让它通过.但是如何确保整个字符串(pageUrl)匹配?

Jon*_*eet 5

在开头和结尾使用^和$强制它生成整个字符串:

if (Regex.IsMatch(pageUrl, @"^[-_a-zA-Z0-9/]+(.aspx(\?.+)?)?$"))
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅"正则表达式中的锚点"的MSDN页面.