asp.net MVC регулярное выражение - PullRequest
1 голос
/ 19 июля 2010
(@"^\w+(?: \w+){0,8}$"

указанное регулярное выражение ограничивает все специальные символы, кроме _.как бы я ограничил это.

Ответы [ 2 ]

2 голосов
/ 19 июля 2010

Используйте

@"^[^\W_]+(?: [^\W_]+){0,8}$"

, чтобы разрешить все, что соответствует \w, кроме _.

\W означает «любой символ, которому не соответствует \w», поэтому, поместив его в класс символов с отрицанием и добавив _ в этот класс, мы фактически вычтем _ из \w. *

Другими словами, [^\W_] означает «соответствовать любому символу, который не является ни буквенно-цифровым символом, ни подчеркиванием».

Другим способом (возможно, более явным и простым для понимания) было бы использование свойств Unicode:

@"^[\p{L}\p{N}]+(?: [\p{L}\p{N}]+){0,8}$"

, где [\p{L}\p{N}] означает «любая буква или цифра Unicode».


* В .NET сокращение \w соответствует намного большему, чем [A-Za-z0-9_], особенно международные (не ASCII) буквы.
0 голосов
/ 19 июля 2010

Заменить \w на [a-zA-Z0-9]. Сочетание клавиш \w соответствует любому символу слова, то есть буквенно-цифровым символам и подчеркиванию.

@"^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+){0,8}$"

Вы можете использовать [a-z0-9], когда узнаете, как установить флаг i (без учета регистра).

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