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 字符串作为输入)。
我是正则表达式的菜鸟。 我想阻止特殊字符的形式。
授权的字符是:
^#{}()<>|_æ+@%.,?:;"~\/=*$£€!
我制定的 preg_match 规则出现问题
if(preg_match("#[^#{}()<>|_æ+@%.,?:;"~\/=*$£€!]+#",$input)) $error=1;
我知道我应该封装特殊字符,但我不知道如何实现。
你能帮帮我吗? 提前致谢。
您可以使用
preg_match('/[^#{}()<>|_æ+@%.,?:;"~\/=*$£€!]+/u', $input)
注:
- 在单引号字符串文字中使用双引号可以避免额外的转义
- 当你使用一个特定的字符作为正则表达式分隔符字符时,这里你使用了
#
,你必须在模式中转义这个字符。
注意 #
始终可以安全地转义,因为当 x
标志用于启用 comment/verbose/free-spacing 时,它是一个特殊的正则表达式元字符模式(在正则表达式 references/libraries 中以多种方式调用)。
此外,由于您使用的是来自外部 ASCII 字符的字符,因此最好添加 u
标志(以支持 Unicode 字符串作为输入)。