Выражения регулярных выражений для всех не алфавитно-цифровых символов
Я пытаюсь сделать регулярное выражение для строки, содержащей в ней по крайней мере 1 не буквенно-цифровой символ
Код, который я пытаюсь использовать,
Regex symbolPattern = new Regex("?[[email protected]#$%^&*()_-+=[{]};:<>|./?.]");
Я пытаюсь сопоставить только один из [email protected]#$%^&*()_-+=[{]};:<>|./?.
, но он, похоже, не работает.
Ответы
Ответ 1
Если вы хотите сопоставить не алфавитно-цифровые символы, просто используйте \W|_
.
Regex pattern = new Regex(@"\W|_");
Это будет соответствовать всему, кроме 0-9 и az. Информация о классе символов \W
и другие доступны здесь (С# Regex Cheet Sheet).
Ответ 2
Вы также можете избежать регулярных выражений, если хотите:
return s.Any(c => !char.IsLetterOrDigit(c))
Ответ 3
Вы можете проверить противоположное условие?
Match match = Regex.Match(@"^([a-zA-Z0-9]+)$");
if (!match.Success) {
// it alphanumeric
} else {
// it has one of those characters in it.
}
Ответ 4
Я не получил весь ваш вопрос, но это регулярное выражение будет соответствовать тем строкам, которые содержат по крайней мере один алфавитно-цифровой символ. Это включает пробелы (не могли видеть это в вашем списке)
[^\w]+
Ответ 5
Ваше регулярное выражение просто нуждается в небольшой настройке. Дефис используется для формирования диапазонов, таких как A-Z
, поэтому, если вы хотите сопоставить буквенный дефис, вам либо нужно избежать его с помощью обратного слэша, либо переместить его в конец списка. Вам также нужно избегать квадратных скобок, потому что они являются разделителями для класса символов. Затем избавьтесь от этого вопросительного знака в начале и вы в бизнесе.
Regex symbolPattern = new Regex(@"[[email protected]#$%^&*()_+=\[{\]};:<>|./?,-]");
Если вы хотите совместить символы препинания ASCII, это, вероятно, самый простой способ. \W
соответствует символам пробела и управляющим символам в дополнение к пунктуации, и он соответствует им из всего диапазона Unicode, а не только ASCII.
Кажется, вам не хватает нескольких символов: обратная косая черта, апостроф и кавычка. Добавление их дает вам:
@"[[email protected]#$%^&*()_+=\[{\]};:<>|./?,\\'""-]"
Наконец, рекомендуется всегда использовать строковые литералы С# (@"..."
) для регулярных выражений; это сэкономит вам много хлопот с обратной косой чертой. Котировки теряются, удваивая их.