Валидатор регулярных выражений не допускает использование неанглийских символов для \ w - PullRequest
6 голосов
/ 24 сентября 2010

У меня есть поле электронной почты на моей странице, которое я проверяю с помощью средства проверки регулярных выражений, предоставленного моим asp.net. Я использую то же выражение проверки, которое дано вместе с валидатором для электронных писем, т. Е.

ValidationExpression = "\ ш + ([-. + '] \ Ш +) @ \ W + ([-.] \ W +) \ ш + ([-.] \ W +). *"

Работает нормально, но проблема возникает, когда я пытаюсь дать неанглийские буквы, например

è é ü û ă и т. Д.

Но моя проблема в том, что когда я использую одно и то же выражение в javascript, это разрешает эти символы, даже на стороне сервера, то же выражение допускает эти символы.

Я думаю, что '\ w' разрешает все буквенно-цифровые символы, а также не английские символы, но Я не знаю, почему он не позволяет использовать его в валидаторе.

Пожалуйста, предложите, если я что-то сделал не так.

Ответы [ 3 ]

2 голосов
/ 24 сентября 2010

\w означает символ слова. И определение символа слова может отличаться от реализации к реализации. Некоторые используют только [A-Za-z0-9_], в то время как другие также включают символы не-US-ASCII (см. «Ascii-only» в сравнение разновидностей регулярных выражений ).

Если вы хотите убедиться, что используются одни и те же символы, перечислите их явно как [A-Za-z0-9_èéüûă].

1 голос
/ 24 сентября 2010

Это ограничение стандарта ECMAScript; F.E. в .NET \w также соответствует неанглийским символам.

Самое простое решение - отключить проверку на стороне клиента при работе с ASP.NET, чтобы средство проверки на стороне сервера (которое использует реализацию .NET) провело бы соответствующую проверку.


var r = new Regex(@"\w");
foreach(var m in r.Matches("è é ü û a"))
      Console.WriteLine(m);

Output:
è
é
ü
û
a
1 голос
/ 24 сентября 2010

Это известная проблема: средство проверки на стороне клиента регулярного выражения ASP.Net содержит ошибки для неанглийских символов.Вы можете использовать проверку на стороне сервера (если это возможно) или написать свой собственный CustomValidator на стороне клиента.

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