簡體   English   中英

Aspx RegularExpressionValidator在客戶端和服務器上的工作方式不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM