Как мне написать регулярное выражение, которое соответствует следующим критериям?
- Нет номеров
- Нет специальных символов
- Без пробелов
в строке
Как мне написать регулярное выражение, которое соответствует следующим критериям?
в строке
Карет внутри класса символов [^] является оператором отрицания, общим для большинства реализаций регулярных выражений (Perl,.NET, Ruby, Javascript и т.д.). Поэтому я бы сделал это следующим образом:
[^\W\s\d]
Или вы можете использовать другой подход, просто включив только то, что вы хотите:
[A-Za-z]
Основное отличие здесь состоит в том, что первый будет включать символы подчеркивания. Это и демонстрирует способ написания выражения в тех же терминах, о которых вы думаете. Но если вы меняете, вы думаете включить символы вместо их исключения, тогда это может привести к более легкому для чтения регулярному выражению.
Мне не совсем понятно, какие специальные символы вам не нужны. Но я написал оба решения на случай, если для вас лучше, чем другого.
В Perl это будет что-то вроде:
$string !~ /[\d \W]/
Конечно, это зависит от вашего определения "специальных символов". \W
соответствует всем несловным символам. Символом слова является любой буквенно-цифровой символ плюс символ пробела.
Самое главное, чтобы узнать о регулярных выражениях, это не их синтаксис, а способность четко объяснять, что вы ищете. Это действительно 90% проблемы.
Кроме того, обычно лучше указать, что вы хотите, а не то, что вы не хотите.
Попробуйте ^ [^ 0-9\p {P}] $
var StringInputToClean = @"[:(M)?*a',\y<>&a#~%{}[email protected]\\ /27!;$+]";
var pattern = @"[^a-zA-Z0-9\s]";
string replacement = "";
var result = Regex.Replace(StringInputToClean, pattern, replacement);