PHP Preg_match 授权字符

PHP Preg_match for authorized characters

我是正则表达式的菜鸟。 我想阻止特殊字符的形式。

授权的字符是:

^#{}()<>|_æ+@%.,?:;"~\/=*$£€!

我制定的 preg_match 规则出现问题

if(preg_match("#[^#{}()<>|_æ+@%.,?:;"~\/=*$£€!]+#",$input)) $error=1;

我知道我应该封装特殊字符,但我不知道如何实现。

你能帮帮我吗? 提前致谢。

您可以使用

preg_match('/[^#{}()<>|_æ+@%.,?:;"~\/=*$£€!]+/u', $input)

注:

  • 在单引号字符串文字中使用双引号可以避免额外的转义
  • 当你使用一个特定的字符作为正则表达式分隔符字符时,这里你使用了#,你必须在模式中转义这个字符。

注意 # 始终可以安全地转义,因为当 x 标志用于启用 comment/verbose/free-spacing 时,它是一个特殊的正则表达式元字符模式(在正则表达式 references/libraries 中以多种方式调用)。

此外,由于您使用的是来自外部 ASCII 字符的字符,因此最好添加 u 标志(以支持 Unicode 字符串作为输入)。