Regex для буквенно-цифровых и специальных символов

Мне нужно определить регулярное выражение, которое принимает буквенно-цифровые и следующие специальные символы: @ # $% & Amp; * () -_ +] [& APOS ;;:.,!

Я придумал:

string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![]\s\\/]+$";

Но это, похоже, не работает. Может кто-нибудь, пожалуйста, дайте мне знать, чего не хватает?

 Douglas18 мая 2012 г., 00:34
Ваш код соответствует только символам ASCII (что может быть тем, что вам требуется для вашего сценария). Если вы также хотите разрешить буквы Unicode, такие какé, вы должны использовать\w вместоa-zA-Z0-9_.

Ответы на вопрос(3)

+ и т. Д.). Самый простой способ - просто избежать их всех:

string pattern = @"[a-zA-Z0-9\@\#\$\%\&\*\(\)\-\_\+\]\[\'\;\:\?\.\,\!]+$";
 18 мая 2012 г., 00:35
Я бы сказал, что бегство от всего лишь ничего не делает.
 18 мая 2012 г., 00:27
* а также+ однозначны внутри наборов символов. Хотя я обычно избегаю их в качестве хорошей практики, в этом нет необходимости.
 25 сент. 2014 г., 15:47
@ Bergi Я бы сказал, что это делает его очень разборчивым, особенно если бы вы отказались отa-zA-Z0-9 а также\_ для простого\w.
 13 февр. 2013 г., 07:38
@carlosfigueira - Спасибо за ваш синтаксис. Но не могли бы вы сказать, что нужно сделать, если я хочу, чтобы по крайней мере «один меньший регистр», по крайней мере один случай Бигера и по крайней мере один номер и по крайней мере один специальный символ?
 18 мая 2012 г., 00:41
@minitech, правда, спасибо за разъяснения. Берги, у вас есть точка зрения, но я бы предпочелalways избегать любых символов, которые могут быть интерпретированы как специальные символы, даже если они не находятся внутри [] -блока, поэтому людям, не слишком знакомым с регулярными выражениями, не нужно думать о том, означает ли это что-то особенное или нет. В зависимости от команды, в которой вы работаете, вы можете быть более строгими в отношении того, что следует избегать.
Решение Вопроса

[] в середине нужно экранировать *:

Вы также, вероятно, хотите закрепить начало строки с помощью^.

* Probably just the ] but I like to do both for balance.

 29 мая 2012 г., 15:20
@Sreekumar: вместо+ в конце, что означает «по крайней мере, один», просто ограничьте его:{6,19}
 18 мая 2012 г., 00:26
Ваше редактирование превзошло мой комментарий к тому же эффекту на 1с. +1
 18 мая 2012 г., 00:27
+1 Хороший ответ. Что касается якоря, однако, это зависит от его потребностей. Следует отметить, что ФП^ начало матчей и$ конец матчей, и тогда он может использовать то, что ему нужно.
 29 мая 2012 г., 09:12
Как добавить предел символов до 6-19 символов?

кобку] внутри, как & quot;^& quot ;, & quot;-& Quot; и выходящая последовательность\ сама, что вы сделали правильно:

string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![\]\s\\/]+$";
                                    ^              ^   ^

Ваш ответ на вопрос