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