php只允许使用pregmatch的字母,数字,空格和特定符号

Cud*_*doX 29 php regex string validation preg-match

在我的PHP我preg_match用来验证输入文本.

if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
Run Code Online (Sandbox Code Playgroud)

但这只允许使用字母数字,并且不允许使用空格.我想允许空格,字母和数字.和句点(.)和短划线( - )

请帮帮我吗?提前致谢.

Bab*_*aba 42

使用

preg_match('/^[a-z0-9 .\-]+$/i', $firstname)
Run Code Online (Sandbox Code Playgroud)

  • `'/ ^ [A-Z0-9\040\\ - ] + $/i'` (6认同)

ste*_*ema 20

如果您不仅要允许ASCII,请使用Unicode属性:

preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
Run Code Online (Sandbox Code Playgroud)

\p{L}在任何字母的任何语言,也符合中国,希伯来语,阿拉伯语,...字符.

\p{N} 任何类型的数字字符(也指例如罗马数字)

如果你想限制数字,那么使用 \p{Nd}

  • 我相信如果要在PHP中正常工作,你应该添加一个'u'修饰符.像这样:preg_match('/ ^ [\ p {L}\p {N} .-] + $/u',$ firstname) (2认同)