Как правило, лучше иметь белый список, чем черный список.
Regex имеет удобный \w
, что эффективно означает буквенно-цифровой плюс подчеркивание (в некоторых вариантах также добавляются акцентированные символы (á, é, ô и т. Д.), А другие нет).
Вы можете инвертировать это, используя \W
, чтобы обозначать все, что не является буквенно-цифровым.
So заменить \W
пустой пустой удалит все специальные символы.
С другой стороны, если вам нужен другой набор символов на алфавитно-цифровом, вы можете использовать отрицание класса символов: [^abc]
будет соответствовать все, что не a
или b
или c
и [^a-z]
будет соответствовать всем который не находится в диапазоне a,b,c,d...x,y,z
эквивалент \w
является [A-Za-z0-9_]
и, таким образом, является \W
[^A-Za-z0-9_]
Я могу добавить несколько тестовых примеров с заглавными буквами. –
@jm: это тоже хорошо, я просто слишком ленив, чтобы набирать текст, и «i» после регулярного выражения делает регулярное выражение нечувствительным к регистру;) – Kris
P.S. Почему это принятый ответ, если в вопросе теперь указано, что среда является .NET? (Я не думаю, что это было, когда я ответил). Это было бы не слишком концептуально иначе, например, для C#, но выглядело бы не так. – Kris