0

我有以下文本框控件和正则表达式验证器:

<asp:TextBox runat="server" ID="ATextBox" style="width:400px;"/>
                <asp:RegularExpressionValidator runat="server" ID="ATextBoxRegularExpressionValidator" Display="Dynamic"
                    ControlToValidate="ATextBox" ValidationExpression="^([a-zA-Z0-9]+)|((https?://)?([\w-]+\.)+[\w-]+(/[-\w ;,./?%&=]*)?)$" 
                    ErrorMessage="<%$ Resources:Antivirus, AVURL_InvalidLink %>">
                                       </asp:RegularExpressionValidator>

正则表达式是:

^([a-zA-Z0-9]+)|((https?://)?([\w-]+\.)+[\w-]+(/[-\w ;,./?%&=]*)?)$

当我使用任何验证器表达式测试器测试它时,它可以工作,例如:

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

基本上,正则表达式应该接受所有 URL 和主机名。

太好了:谷歌 google.com http://google.com https://google.com

坏的:

<asp>http://google.com</asp>

任何人都知道为什么我在应用程序中运行时的正则表达式失败了以下内容:google.com http://google.com https://google.com

更新

我已经设法解决了我的问题....正在做我想做的正则表达式是:

^((https?://)?([\w-]+.) [\w-]+(/[-\w ;,./?%&=] )?)$

谢谢你的帮助

4

1 回答 1

1

我会说第一个问题是/需求逃脱了:

^([a-zA-Z0-9]+)|((https?:\/\/)?([\w-]+\.)+[\w-]+(\/[-\w ;,.\/?%&=]*)?)$

下一个有趣的问题是,您当前拥有的 Regex 并不真正匹配整个 URL,它匹配和分组部分。但也许这就是你想要的。

这是一个带有修改后的正则表达式和您记下的值的Rubular 。

于 2013-07-24T09:40:10.207 回答