Regex для любого английского символа ASCII, включая специальные символы

Я хочу написать регулярное выражение в php для соответствия только любым английским символам, пробелам, номерам и всем специальным символам.

Из этого вопроса Regex любой символ ascii

Я попробовал это

preg_match("/[\x00-\x7F]+/", $str); 

но он выдает предупреждение

 No ending delimiter '/' found 

поэтому, как написать это регулярное выражение в php.

альтернативой было бы что-то вроде [az \ d \ s], а также по одному рассмотреть все специальные символы, но разве нет способа сделать проще?

благодаря

Есть ряд сложных решений, но я бы предложил это красиво простое регулярное выражение:

 ^[ -~]+$ 

Он позволяет печатать все символы в таблице ASCII .

В PHP:

 $regex = '%^[ -~]+$%'; if (preg_match($regex, $yourstring, $m)) { $thematch = $m[0]; } else { // no match... } 

объяснение

  • Якорь ^ утверждает, что мы находимся в начале строки
  • Класс символов [ -~] соответствует всем символам между пробелом и тильдой (все печатные символы в таблице ASCII)
  • Калькулятор + означает «соответствует одному или нескольким из них»
  • $ Anchor утверждает, что мы находимся в конце строки

Регулярное выражение PHP содержит набор классов символов, которые вы можете ссылаться, причем ascii является одним из них

 $test = "hello world 123 %#* 单 456"; preg_match_all("/[[:ascii:]]+/",$test,$matches); print_r($matches);