我一直在阅读正则表达式,但我不知道我的代码出了什么问题:
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}它永远不会返回true。我正在尝试验证用户名,只允许小写a-z,大写a-z,数字,连字符和下划线。
发布于 2011-07-13 09:26:47
eregi()已弃用。请改用preg_match()。
您没有regex delimiters (如/、@、~等)。
使用preg_match('/^[\w-]+\z/')。
/是我使用的分隔符。PHP允许你使用many other characters.\w是[A-Za-z0-9_]的一个快捷方式。这对于缩短正则表达式和字符类的clearer.-不是有效范围的一部分,它将按字面意思进行处理。我没有转义它,因为它不需要转义,因为在这个scenario.+中,它是一个表示匹配1次或更多次的量词。你需要here.\z的意思是匹配字符串的结尾。您使用了允许尾随\n.的$
发布于 2011-07-13 09:28:02
不要使用eregi -它已被弃用,请使用preg_match:
if (preg_match("/^[A-Za-z0-9_\-]+/i$", $username)){return true;}https://stackoverflow.com/questions/6673124
复制相似问题