Вопрос по регулярным выражениям - PullRequest
1 голос
/ 03 августа 2010

Я видел это утверждение

$name = ereg_replace("[^A-Za-z0-9.]", "", $name);

В чем разница между [^A-Za-z0-9.] и [A-Za-z0-9.]?

Основываясь на моем понимании регулярного выражения, [] используется длявключите все действительные символы для замены в функцию ereg_replace.

Тогда какова цель включения ^ в []?

Спасибо

1 Ответ

11 голосов
/ 03 августа 2010

Инициал ^ внутри класса символов […] инвертирует набор символов, которые описаны внутри класса символов.В то время как [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.].

...