2012-08-30 39 views
0

我有一個驗證密碼字段的RegularExpressionValidator。密碼必須包含字母和至少1個數字,且必須介於8到20個字符之間。這裏是我的驗證:我的正則表達式有什麼問題

<asp:RegularExpressionValidator ID="regexPassword" runat="server" ControlToValidate="txtNewPassword" 
       ValidationExpression="^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,20}$" ErrorMessage="Password must contain at least one digit and must be between 8 and 20 characters" 
       Text="*" ValidationGroup="Passwords"></asp:RegularExpressionValidator> 

此作品在我的開發環境極大,當我的工作我的本地機器上,但是當我把它遷移到生產環境中這是行不通的。在生產環境中,我必須以數字開頭。我們的生產環境運行的是Win 2k8 R2機器,但我無法對這種情況進行成像。我在這裏發現了另一篇文章,說這個表達式可以工作,所以我測試了它,並確實工作......但只在我的開發環境中。 任何人都可以看到爲什麼,在我的生產環境中,我必須從數字開始才能使用它?該號碼應該在密碼的任何地方。

感謝

+0

你的正則表達式很好。它可能是asp.net中的引擎工作方式不同,但是你的表達很好,應該按預期工作。 –

+0

你不使用IE6嗎? http://blog.stevenlevithan.com/archives/regex-lookahead-bug – Patrick

+0

什麼版本,服務包等是你的IIS和.Net框架在每個環境? – CaffGeek

回答

1

試試這個:

^(?=\w{8,20}$)(?=.*[0-9])(?=.*[a-zA-Z]).* 

它涉及IE6的bug,但它仍然可以根據您的生產機器上運行的版本的ASP.NET應用。

+0

有趣!雖然它在IE 6中工作,當我在本地訪問它並且在Prod中失敗時。也許是一個認證問題? – rob

相關問題