首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用regexp检查用户名

使用regexp检查用户名
EN

Stack Overflow用户
提问于 2012-07-02 17:37:44
回答 1查看 79关注 0票数 0

对于我的注册,我用我的regex检查username -- Username必须包含超过3个字符,并且少于20个字符。此外,用户名只能包含字母数字字符和“_”、".“、”-“。

代码语言:javascript
运行
复制
/^([\w\.\-]{3,20})$/isu.

现在我也想检查(p-),如果这个存在返回假用户名不能内容(p-)

代码语言:javascript
运行
复制
private $regExpUsername = "/^([\w\.\-]{3,20})$/isu";

    private function checkUsername($username){
        if(!preg_match($this->regExpUsername, $username)){
            $this->addError(ERR_ENTER_USERNAME);
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-02 17:55:27

我知道您不希望用户名以-结尾。这是这样的

代码语言:javascript
运行
复制
^[\w.-]{2,19}[\w.]$

由于\w包含下划线,这将允许用户名以下划线结尾,而不是以破折号结尾,因为破折号不属于定义最后一个字符的字符类。

查看here on Regexr

正如zerkms注释的那样,s修饰符在这里没有任何意义,因为它改变了您不使用的.特殊字符的行为。

此外,i修饰符没有任何意义,它将匹配大小写字母,但您不使用字母来定义您的表达式。

更新

然后你需要一个negative lookahead

代码语言:javascript
运行
复制
^(?!.*p-)[\w.-]{3,20}$

(?!.*p-)是一个负前视,只要字符串中有p-,这个断言就会失败。

查看here on Regexr

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11291125

复制
相关文章

相似问题

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