класс символов preg_match, заменяющий слишком много - PullRequest
2 голосов
/ 15 января 2012

У меня небольшая проблема с регулярным выражением.Я хочу очистить строку.

В настоящее время я использую следующее регулярное выражение:

preg_replace("/[^a-zA-Z0-9 _-]/", "", "Example1:2@32");

, которое дает мне: "Example1232"

Но двоеточие не должно 'тоже не подлежит замене.Я уже пробовал с:

preg_replace("/[^a-zA-Z0-9 _-:]/", "", "Example1:2@32");

, но это не работает.Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

3 голосов
/ 15 января 2012

Вы должны сбежать - персонаж

preg_replace("/[^a-zA-Z0-9 _\-:]/", "", "Example1:2@32"));
2 голосов
/ 15 января 2012

Любой метод должен работать:

  • экранировать тире - или
  • поставить тире - в конце вашего регулярного выражения, поскольку между двумя другими символами он имеетопределенное значение (а именно диапазон, как в a-z).
...