我一直在阅读和阅读正则表达式,但我无法弄清楚我的代码有什么问题:
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}
它永远不会返回 true。我正在尝试验证用户名,并且只允许小写 az、大写 az、数字、连字符和下划线。
我一直在阅读和阅读正则表达式,但我无法弄清楚我的代码有什么问题:
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}
它永远不会返回 true。我正在尝试验证用户名,并且只允许小写 az、大写 az、数字、连字符和下划线。
eregi()
已弃用。改为使用preg_match()
。
您没有正则表达式分隔符(例如/
, @
,~
等)。
使用preg_match('/^[\w-]+\z/')
.
/
是我使用的分隔符。PHP 允许您使用许多其他字符。\w
是一个快捷方式[A-Za-z0-9_]
。在这里使正则表达式更短并且希望更清晰很有用。-
不是有效范围的一部分,它将按字面意思理解。我没有逃脱它,因为它不需要在这种情况下逃脱。+
是一个量词,表示匹配 1 次或多次。你在这里需要那个。\z
表示匹配字符串的结尾。你用过$
,这将允许一个尾随\n
。不要使用eregi
- 它已被弃用,请preg_match
改用:
if (preg_match("/^[A-Za-z0-9_\-]+/i$", $username)){return true;}