Инициал ^
внутри класса символов […]
инвертирует набор символов, которые описаны внутри класса символов.В то время как [A-Za-z0-9.]
соответствует одному символу из набора символов, описанного A-Za-z0-9.
, [^A-Za-z0-9.]
соответствует любому другому символу, кроме одного из символов, описанных A-Za-z0-9.
.То, чем являются эти другие символы, зависит от базового набора символов, с которым определяется строка.
Так что [abc]
соответствует либо a
, b
, либо c
, а [^abc]
соответствует любому другому символу, кромеa
, b
и c
.Ваш пример кода удалит все символы, которые не описаны [A-Za-z0-9.]
.Это оставляет только символы [A-Za-z0-9.]
.