Обратная косая черта, выходящая в RegularExpressionValidator - PullRequest
0 голосов
/ 16 марта 2010

Мне нужно убедиться, что входное значение содержит хотя бы одну точку, поэтому я использовал следующее:

<asp:RegularExpressionValidator runat="server" 
ControlToValidate="MyInput" Text="*" 
ErrorMessage="must contain at least one dot" 
ValidationExpression="\.+" />

И это не работает. Изучив исходный код страницы, я вижу, что ASP.NET экранирует символ обратной косой черты, поэтому в сценарии java он выглядит как "\\.+". Почему это так и как я могу предотвратить выход RegularExpressionValidator из него?

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Если вы хотите проверить, содержит ли вход хотя бы одну точку, ваше выражение неверно. Он соответствует только входным данным, которые состоят только из точек.

Вы должны использовать

.*\..*

Если побег также оказывается проблемой, используйте [.] вместо \..

Обратите внимание, что RegularExpressionValidator не проверяет пустые поля. Для этого используйте RequiredFieldValidator.

1 голос
/ 16 марта 2010

Двойной экранирование необходимо, поскольку обратная косая черта используется для escape-последовательностей как в JavaScript, так и в регулярных выражениях. Быстрый тест, чтобы проиллюстрировать этот момент:

alert('42'.match("\d"));     // no match
alert('42'.match("\\d"));    // match

Но это не решает твою проблему. Первый шаг в устранении неполадок: измените проверочное выражение на a. Разве это не терпит неудачу на "foo" и проходит на "bar"? Если нет, то на вашей странице что-то не так - возможно, из-за несвязанной ошибки JavaScript код проверки пропускается.

Немного не по теме: Ваши выражения проверки могут быть обрезаны до \. (без плюса), так как вам действительно нужно только сопоставить одну точку.

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