Вопрос по regex, c#, vb.net – Regex для буквенно-цифровых и специальных символов

3

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

Я придумал:

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

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

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

Ваш Ответ

3   ответа
3

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

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

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

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

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

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

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

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

Похожие вопросы