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

dav*_*dav 10 php regex preg-match

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

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

我试过这个

preg_match("/[\x00-\x7F]+/", $str);
Run Code Online (Sandbox Code Playgroud)

但它会发出警告

No ending delimiter '/' found 
Run Code Online (Sandbox Code Playgroud)

那么,如何在php中编写这个正则表达式.

替代方案就像[az\d\s]一样,并且一个接一个地考虑所有特殊字符,但是有没有办法做得更简单?

谢谢

zx8*_*x81 20

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

^[ -~]+$
Run Code Online (Sandbox Code Playgroud)

它允许ASCII表中的所有可打印字符.

在PHP中:

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

说明

  • ^锚断言,我们是在字符串的开头
  • 字符类[ -~]匹配空格和波浪号之间的所有字符(ASCII表中的所有可打印字符)
  • +量词的意思是"匹配的一个或多个的那些"
  • $锚断言,我们是在字符串的结束

  • 谢谢你@anubhava,我建议这个回答一段时间的问题,结果证明是非常有用的.:) (2认同)