Странная проблема .NET Regex - PullRequest
0 голосов
/ 26 марта 2009

Учитывая следующее выражение RegEx, проверка его на regexlib.com со строкой «2rocks» выдает «match». Тем не менее, в моем приложении .NET, это вызывает валидатор регулярных выражений выдает ошибку проверки.

^(?=.*[A-Za-z])[a-zA-Z0-9@\-_\+\.]{6,32}$

Если я изменю строку на "rocks2" в приложении и на regexlib.com, я получу совпадение в обоих местах.

Цель состоит в том, чтобы иметь выражение регулярного выражения, которое требует, чтобы длина строки составляла от 6 до 32 символов, и разрешать использование AZ, az, числовых и других специальных символов, включенных в регулярное выражение, с принудительным использованием по крайней мере ОДНОЙ буквы.

Вот разметка ASP, я в полном замешательстве.

<asp:regularexpressionvalidator 
    id=vldRegEx_LoginID 
    runat="server" 
    ErrorMessage="Regex Error Message" 
    Display="Dynamic" 
    ControlToValidate="txtLoginID" 
    ValidationExpression="^(?=.*[A-Za-z])[a-zA-Z0-9@\-_\+\.]{6,32}$">
        <img src="images/error.gif" border="0">
 </asp:regularexpressionvalidator>

Ответы [ 2 ]

6 голосов
/ 26 марта 2009

Выражение ValidationExpression, которое вы передаете, на самом деле является выражением, которое используется в качестве регулярного выражения javascript на стороне клиента. Регулярное выражение Javascript не поддерживает все функции регулярного выражения .NET, поэтому вы сталкиваетесь с проблемами. У вас есть два варианта:

  • Отключить проверку на стороне клиента и использовать только проверку на стороне сервера (установите флажок EnableClientScript = false на валидаторе)
  • Переписать регулярное выражение, чтобы оно было действительным регулярным выражением javascript (тестер регулярных выражений javascript: http://regexpal.com/)
0 голосов
/ 26 марта 2009

Возможно, вас укусила эта ошибка . В JavaScript RegExp следует избегать осторожных утверждений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...