首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eregi验证问题

Eregi验证问题
EN

Stack Overflow用户
提问于 2011-07-13 09:25:03
回答 2查看 107关注 0票数 1

我一直在阅读正则表达式,但我不知道我的代码出了什么问题:

代码语言:javascript
复制
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}

它永远不会返回true。我正在尝试验证用户名,只允许小写a-z,大写a-z,数字,连字符和下划线。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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.
  • Inside很有用,如果-不是有效范围的一部分,它将按字面意思进行处理。我没有转义它,因为它不需要转义,因为在这个scenario.
  • +中,它是一个表示匹配1次或更多次的量词。你需要here.
  • \z的意思是匹配字符串的结尾。您使用了允许尾随\n.

$

票数 5
EN

Stack Overflow用户

发布于 2011-07-13 09:28:02

不要使用eregi -它已被弃用,请使用preg_match

代码语言:javascript
复制
if (preg_match("/^[A-Za-z0-9_\-]+/i$", $username)){return true;}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6673124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档