[英]Aspx RegularExpressionValidator works differently on client and server
我在獲取正則表達式以使RegularExpressionValidator在客戶端上工作時遇到一些問題:
(?=.{8,})(?=.*[A-Z])(?=.*[\d])(?=.*[\W])|(?=.*[a-z])(?=.*[\d])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\d])
如果提供的字符串,則此表達式應返回true
在C#(.NET 3.5)中使用此表達式可直接返回不同測試字符串的預期結果,但是在客戶端瀏覽器中,有效字符串(例如aaaaaBBB1)不起作用。
我已經在這里閱讀了該線程 ,所以一個解釋是客戶端使用JavaScript的方式與.NET實現相比有所不同。
現在,我嘗試在JavaScript中運行正則表達式以驗證在上面鏈接的線程中所做的參數,但是在JavaScript中,我的正則表達式也與C#中的相同。
有沒有其他方法可以使RegularExpressionValidator工作? 我不明白為什么JavaScript可以工作(我希望在閱讀有關實現的差異后就不能使用),但是RegularExpressionValidator卻不能。
在此先感謝您指出正確的方向。
G。
請嘗試以下操作:
^(?:(?=.*[A-Z])(?=.*\d)(?=.*\W)|(?=.*[a-z])(?=.*\d)(?=.*\W)|(?=.*[A-Z])(?=.*[a-z])(?=.*\W)|(?=.*[A-Z])(?=.*[a-z])(?=.*\d)).{8,}$
由於長度聲明只是第一個替換的一部分,因此您的正則表達式將允許長度小於8的字符串通過。
然后(這可能是問題),您的正則表達式永遠不會匹配任何文本,而只會斷言。 因此,我將“ length regex”作為字符限制之外的內容,並使其實際匹配。
這應該在JavaScript和.NET中均有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.