2013-07-24 17 views
0

我有以下的文本框控件和正則表達式驗證:asp.net的RegularExpressionValidator工作不正常

<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和主機名。

那麼好:爲什麼在應用程序運行失敗以下時,我的正則表達式

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

任何人任何想法: 谷歌谷歌 google.com http://google.com https://google.com

壞。 com http://google.com https://google.com

UPDATE

我已經成功地解決我的問題....這是做什麼我想要做的正則表達式爲:

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

感謝您的幫助

+0

你有http:// g oogle.com的好壞,你可以稍微清楚一點你想驗證的好 – Srb1313711

+0

剛更新..壞會是字符串: http:// google.com Fiona

回答

1

我想說的第一個問題是/需要轉義:

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

下一個你感興趣的問題是,你現在使用的正則表達式並沒有匹配整個URL,它匹配和分組部分。但也許這就是你想要的。

這裏是Rubular與修改後的正則表達式和您注意到的值。

+0

我添加了轉義字符。不幸的是,只有'谷歌'正在匹配。所有其他人都失敗了 – Fiona