Подтвердить что ты не робот

Выражения регулярных выражений для всех не алфавитно-цифровых символов

Я пытаюсь сделать регулярное выражение для строки, содержащей в ней по крайней мере 1 не буквенно-цифровой символ

Код, который я пытаюсь использовать,

Regex symbolPattern = new Regex("?[[email protected]#$%^&*()_-+=[{]};:<>|./?.]");

Я пытаюсь сопоставить только один из [email protected]#$%^&*()_-+=[{]};:<>|./?., но он, похоже, не работает.

4b9b3361

Ответ 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]#$%^&*()_+=\[{\]};:<>|./?,\\'""-]"

Наконец, рекомендуется всегда использовать строковые литералы С# (@"...") для регулярных выражений; это сэкономит вам много хлопот с обратной косой чертой. Котировки теряются, удваивая их.