Как избежать RegEx, который генерирует ошибку «неожиданного квантификатора» в IE? - PullRequest
4 голосов
/ 15 ноября 2011

Я использую asp.net и C #. У меня есть TextBox с контролем проверки с RegEx.

Я использую этот код для проверки.

ValidationExpression="^(?s)(.){4,128}$"

Но только в IE9 я получаю сообщение об ошибке: unexpected quantifier из раздела javascript.

Возможно, мне нужно сбежать моего RegEx, но я понятия не имею, как это сделать и что бежать.

Не могли бы вы помочь мне с примером кода? Спасибо

Ответы [ 3 ]

5 голосов
/ 15 ноября 2011

Напишите это вместо этого:

 ^([\s\S]){4,128}$

Я подозреваю, что (? S) является причиной ошибки.

2 голосов
/ 15 ноября 2011

Три проблемы: (1) JavaScript не поддерживает встроенные модификаторы, такие как (?s), (2) нет другого способа передать модификаторы в валидаторе ASP, и (3) ни один из этих фактов не имеет значения, потому что JavaScript не 'Поддержка однострочного режима.Большинство людей используют [\s\S] для сопоставления чего-либо, включая символы новой строки в регулярных выражениях JavaScript.

РЕДАКТИРОВАТЬ: Вот как это будет выглядеть в вашем случае:

ValidationExpression="^[\s\S]{4,128}$"

[\s\S] - это класс символов , который соответствует любому символу пробела (\s) или любому символу, который не символ пробела - другими словами, любой символ.Метасимвол точки (.) соответствует любому символу, кроме новой строки.Большинство разновидностей регулярных выражений (например, .NET) поддерживают режим «Однострочный» или «DOTALL», в котором точка также совпадает с новой строкой, но не в JavaScript.

0 голосов
/ 15 ноября 2011

JavaScript не понимает (?s) afaik, вместо этого вы можете заменить . на [^] или [\s\S].

Например: ^[^]{4,128}$

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