Eregi验证问题

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,数字,连字符和下划线.

ale*_*lex 5

eregi()已弃用.请preg_match()改用.

你有没有正则表达式的分隔符(如/,@,~,等).

使用preg_match('/^[\w-]+\z/').

  • /是我用过的分隔符.PHP允许您使用许多其他字符.
  • \w是一个快捷方式[A-Za-z0-9_].这里有用的是使正则表达式更短,并希望更清晰.
  • 在字符类内部,如果-它不是有效范围的一部分,则将按字面意思进行.我没有逃脱它,因为在这种情况下它不需要被转义.
  • +是一个量子,表示匹配1次或更多次.你需要这个.
  • \z表示匹配字符串的结尾.您使用过$,这将允许尾随\n.