创建一个正则表达式来验证用户名

2023-12-28

我编写此代码是为了验证用户名是否满足给定条件,有人知道如何将 2 个正则表达式合并为一个吗?代码是c#

    /// <summary>
    /// Determines whether the username meets conditions.
    /// Username conditions:
    /// Must be 1 to 24 character in length
    /// Must start with letter a-zA-Z
    /// May contain letters, numbers or '.','-' or '_'
    /// Must not end in '.','-','._' or '-_' 
    /// </summary>
    /// <param name="userName">proposed username</param>
    /// <returns>True if the username is valid</returns>
    private static Regex sUserNameAllowedRegEx = new Regex(@"^[a-zA-Z]{1}[a-zA-Z0-9\._\-]{0,23}[^.-]$", RegexOptions.Compiled);
    private static Regex sUserNameIllegalEndingRegEx = new Regex(@"(\.|\-|\._|\-_)$", RegexOptions.Compiled);
    public static bool IsUserNameAllowed(string userName)
    {
        if (string.IsNullOrEmpty(userName)
            || !sUserNameAllowedRegEx.IsMatch(userName)
            || sUserNameIllegalEndingRegEx.IsMatch(userName)
            || ProfanityFilter.IsOffensive(userName))
        {
            return false;
        }
        return true;
    }

如果我正确理解您的要求,以下应该是您想要的。这\w匹配字母、数字或_.

The 消极回顾 http://www.regular-expressions.info/lookaround.html (the (?<![-.])部分)允许_除非前面的字符是. or -.

@"^(?=[a-zA-Z])[-\w.]{0,23}([a-zA-Z\d]|(?<![-.])_)$"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个正则表达式来验证用户名 的相关文章

随机推荐