我一直在阅读和阅读正则表达式,但我无法弄清楚我的代码有什么问题:
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;}