任何英文ASCII字符(包括特殊字符)的正则表达式


Regex for Any English ASCII Character Including Special Characters

我想在php中写一个正则表达式,只匹配任何英文字符,空格,数字和所有特殊字符。

从这个问题正则表达式任意ascii字符

I tried this

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

但是会抛出一个警告

No ending delimiter '/' found 
那么,如何在php中编写这个正则表达式呢?

另一种选择是像[a-z'd's]这样的SMTH,并逐个考虑所有特殊字符,但是没有更简单的方法吗?

谢谢

有许多复杂的解决方案,但我建议使用这个非常简单的正则表达式:

^[ -~]+$

允许在ASCII表中打印所有可打印字符。

在PHP

:

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

  • ^锚断言我们位于字符串
  • 的开头。
  • 字符类[ -~]匹配空格和波浪号之间的所有字符(ASCII表中所有可打印的字符)
  • +量词表示"匹配其中一个或多个"
  • $锚断言我们位于字符串
  • 的末尾。

PHP的正则表达式有一组可以引用的字符类,ascii是其中之一

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