是字符集正则表达式

Ana*_*nam 2 php regex

我正在开展一个项目,我必须验证BECS字符.批量电子结算系统(BECS)仅允许使用以下字符.

BECS字符集

Type                        Description
Numeric                     0 to 9
Alphabetic                  Uppercase A to Z and Lowercase a to z
+                           Plus sign
-                           Minus sign or hyphen
@                           At sign
SP                          Blank space
$                           Dollar sign
!                           Exclamation mark
%                           Percentage sign
&                           Ampersand
(                           Left Parenthesis
)                           Right Parenthesis
*                           Asterik
.                           Period or decimal point
/                           Solidus (slash)
#                           Number Sign (Pound or Hash)
=                           Equal Sign
:                           Colon
;                           Semicolon
?                           Question mark
,                           Comma
’                           Apostrophe
[                           Left square bracket
]                           Right square bracket
_                           Low line (underscore)
^                           Circumflex
Run Code Online (Sandbox Code Playgroud)

我尝试过以下但没有工作:

preg_match("/^[A-Za-z0-9^_[]',?;:=#/.*()&%!$ @+-]+$/", $string);

b0n*_*0ne 5

而不是担心手动转义使用preg_quote

那么代码就是 preg_match("/^[A-Za-z0-9".preg_quote("^_[]',?;:=#/.*()&%!$ @+-", "/")."]+$/", $string);