2009-02-14 2 views

ответ

3

Вы можете эффективно инвертировать свое регулярное выражение с помощью negative look-ahead.

Для примера рассмотрим следующее регулярное выражение, которое соответствует только строка цифр:

^\d+$ 

Это выражение может быть обращено следующим образом:

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

Создайте регулярное выражение, которое не проверяет PO BOX или использует специальный валидатор.

+0

Согласен, это было бы идеально. Но инвертирование существующего регулярного выражения нетривиально? – ccook

+0

Это зависит от самого регулярного выражения, но насколько я знаю, нет волшебного «не» переключателя на всем выражении. –

+0

Правильно, символы могут быть сведены на нет, но не все выражения (насколько я могу судить). В то же время это настраиваемый валидатор. – ccook

3

Просто используйте NegativeRegularExpressionValidator :)

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

Ницца, я собираюсь сделать снимок. ty – ccook

+0

+1, но как насчет проверки на стороне клиента? – Canavar

+0

К сожалению, ничего о стороне клиента :(Спасибо, что указали это. Моя цель состояла в том, чтобы дать идею, а не больше. –

1

решения Mike Чалого очень хорошо, но он не проверяет на стороне клиента.

Я думаю, вы должны использовать custom validator control и написать функцию javascript, которая проверяет не POBox. скопировать шаблон из проверки правильности выражения и использовать 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> 
Смежные вопросы