2009-02-14 106 views

回答

3

您可以使用negative look-ahead有效地反轉您的正則表達式。

例如,考慮僅數字的字符串匹配的以下正則表達式:

^\d+$ 

該表達式可以如下顛倒:

^(?!\d+$).*$ 
1

創建一個正則表達式來驗證不是PO BOX或使用自定義驗證器。

+0

我同意,這將是理想的。但是顛倒一個現有的正則表達式不是微不足道的? – ccook 2009-02-14 19:34:22

+0

這取決於正則表達式本身,但據我所知,在整個表達式中沒有魔術「不」切換。 – 2009-02-14 19:40:04

3

只需使用NegativeRegularExpressionValidator :)

[ToolboxData("<{0}:NegativeRegularExpressionValidator runat=\"server\" ErrorMessage=\"NegativeRegularExpressionValidator\"></{0}:NegativeRegularExpressionValidator>")] 
public class NegativeRegularExpressionValidator : RegularExpressionValidator 
{ 
    protected override bool EvaluateIsValid() 
    { 
     return base.EvaluateIsValid() == false; 
    } 
} 
1

邁克Chaliy的解決方案是很不錯,但它不能在客戶端驗證。

我想你應該使用custom validator control並編寫一個驗證不是POBox的javascript函數。從正則表達式驗證器複製模式,並使用this site編寫您自己的客戶端驗證。

0

爲客戶端腳本的另一個解決方案:

<asp:TextBox runat="server" ID="MYiD" /> 


<asp:CustomValidator runat="server" ControlToValidate="MyId" ErrorMessage="Wrong" 
    ClientValidationFunction="ClientValidate" /> 



<asp:Button runat="server" OnClick="OnClick" /> 

<script language="javascript"> 
function ClientValidate(source, arguments) 
{ 
    var value = arguments.Value; 
    var res = value.match('abc');  
    arguments.IsValid = (res == null || res === undefined); 
} 
</script>