2013-03-09 3 views
0

У меня есть регулярное выражение, чтобы соответствовать по крайней мере один специальный символ, одна цифра, символ верхнего регистра и символ нижнего регистра

^.*(?=.*[\W]).*$ 

Но указанное выше выражение исключает _ (подчеркивание). Я сделал обходной путь, используя

^.*(?=.*[\W_]).*$ 

Но я не уверен, все другие специальные символы это выражение регулярное выражение исключит. Также, пожалуйста, дайте мне знать, почему [\ W] исключает символы подчеркивания ?. Есть идеи?

Я использую это выражение в vb.net

+1

Поскольку '\ w' соответствует любому из' A-Za-z0-9' и '_', поэтому' \ W' (дополнительный класс символов) исключает вышеуказанные символы. (Предположим, что у механизма регулярных выражений нет расширения Unicode для '\ w'). – nhahtdh

+1

'\ w' /' \ W' ведут себя несколько иначе в разных реализациях. Не могли бы вы включить язык, который вы используете? – Wrikken

+0

Я использую vb.net –

ответ

2

\w is letters, digits, and underscores. Таким образом, ничто иное не исключается. Это может зависеть от языка/регулярного выражения, но это в значительной степени стандарт.

+0

Буква может содержать символы Юникода - если вы используете движок с расширением Unicode (не уверены в терминологии здесь) для '\ w' (например, .NET, Perl) – nhahtdh

+0

Это не проблема, связанная с \ W vs \ w. \ w даже не набирает специальных символов. –

Смежные вопросы