Php 为什么这个正则表达式捕获空间?
我目前正在尝试在提交注册表格时验证网站的用户名 用户名的正则表达式是Php 为什么这个正则表达式捕获空间?,php,regex,validation,Php,Regex,Validation,我目前正在尝试在提交注册表格时验证网站的用户名 用户名的正则表达式是([^a-zA-Z0-9}{5,25})。我在PHP中调用用户名preg_match,并使用这个正则表达式 由于某种原因,空间通过时未被发现。我尝试了如下的消极前瞻:(?![a-zA-Z0-9!]{5,25}),但仍然没有进行前瞻 有人有什么想法吗?A[^…]是一个匹配除类中定义的字符以外的任何字符的。因此,[^a-zA-Z0-9\]匹配字母数字或\字符以外的任何字符 您要使用的是一个正字符类,[a-zA-Z0-9\或\w(没有
([^a-zA-Z0-9}{5,25})
。我在PHP中调用用户名preg_match
,并使用这个正则表达式
由于某种原因,空间通过时未被发现。我尝试了如下的消极前瞻:(?![a-zA-Z0-9!]{5,25})
,但仍然没有进行前瞻
有人有什么想法吗?A
[^…]
是一个匹配除类中定义的字符以外的任何字符的。因此,[^a-zA-Z0-9\]
匹配字母数字或\
字符以外的任何字符
您要使用的是一个正字符类,[a-zA-Z0-9\
或\w
(没有/u
修饰符,\w
匹配相同的字符)以及锚定符
因此,您可以使用
preg_match('~^\w{5,25}$~', $s)
或
\z
锚点匹配字符串的最末端,而$
(不带/D
修饰符)也可以在尾随换行符(LF)字符之前匹配。因此用户名中不应包含a-zA-Z0-9
,请检查^
的位置。验证您的正则表达式您的意思可能是:^[a-zA-Z0-9}{5,25}$
preg_match('~\A\w{5,25}\z~', $s)