当前位置: 首页 > 知识库问答 >
问题:

用于以下案例的正则表达式模式来验证名称

武友樵
2023-03-14

我已经为以下用例编写了模式

您可以使用大小写字母、数字和_,连字符,#,$,@符号

名称的长度最多应为255个字符。至少有一个字符应为必填字母或数字_u、连字符、#、$@

我想出了正则表达式^[a-zA-Z0-9。_ -]*$ 这有效吗我不能限制255个字符和 # , $ , @ 验证

  Valid Ex: abc 12345
    abc12345
    abc.ert.trs.123
    abc.bcv.trs
    abc.trt#trs
     a
    a$
    $a#
    1234$
    567#
  test  123 #

共有2个答案

桑成荫
2023-03-14

您可能想尝试以下几点:

Pattern p = Pattern.compile("^[\\w\\d ._#$@-]{1,255}$");

您对剩余#$@字符的问题可能来自于您在连字符(-)之后的字符类中添加它们,从而使编译器无法确定您是否尝试添加范围。

完整示例

String[] valid = {
        "abc 12345",
        "abc12345",
        "abc.ert.trs.123",
        "abc.bcv.trs",
        "abc.trt#trs",
         "a",
        "a$",
        "$a#",
        "1234$",
        "567#",
      "test  123 #"
};
Pattern p = Pattern.compile("^[\\w\\d ._#$@-]{1,255}$");
for (String s: valid) {
    Matcher m = p.matcher(s);
    System.out.printf("\"%s\" is valid? %b %n", s, m.matches());

}

输出

"abc 12345" is valid? true 
"abc12345" is valid? true 
"abc.ert.trs.123" is valid? true 
"abc.bcv.trs" is valid? true 
"abc.trt#trs" is valid? true 
"a" is valid? true 
"a$" is valid? true 
"$a#" is valid? true 
"1234$" is valid? true 
"567#" is valid? true 
"test  123 #" is valid? true 
严阳秋
2023-03-14

您可以使用此正则表达式:

^(?=.*?[\w$#@-])[\w .$#@-]{1,255}$

这里(? =. *?[ \w$#@-])是一个积极的前瞻,它至少确保一个字符是[\w$#@-]字符之一。

此外,我还使用了相当于[a-zA-Z0-9.]

 类似资料:
  • 问题内容: 我正在尝试创建一个正则表达式来根据以下条件验证用户名: 仅包含 字母数字 字符, 下划线 和 点 。 下划线和点号不能位于用户名(例如/ / / )的 末尾 或 开头 。 下划线和点不能 彼此相邻 (例如)。 下划线或点不能被多次使用 的行中 (例如,/ )。 字符数必须在8到20之间。 到目前为止,这是我所做的;听起来它强制执行 除了第5条规则以外的 所有标准规则。我不知道如何添加第

  • 要求: 在我的角度应用程序中,用户密码应符合以下要求, < li >最少八个字符 < li >至少一个大写字母 < li >至少一个小写字母 < li >至少一个号码 < li >至少一个特殊字符 问题: 对于上述要求,我使用下面的正则表达式。 前任:1F4@sf5s6,18F4@sf5s6 问题: Q1:这个正则表达式不符合我的要求吗? Q2:如何解决这个问题? Q3:有没有其他方法来实现这个要

  • 问题内容: 我正在寻找允许我验证json的正则表达式。 我对Regex非常陌生,我知道使用Regex进行解析很不好,但是可以用来验证吗? 问题答案: 是的,可以进行完整的正则表达式验证。 大多数现代正则表达式实现都允许递归正则表达式,该正则表达式可以验证完整的JSON序列化结构。该json.org规范使得它非常简单。 它具有PCRE功能,在PHP中效果很好。应该在Perl中保持不变;并且可以肯定地

  • 我希望在我的应用程序中接受带有字母和连字符或破折号的名称,我的代码基于我在这里找到的答案并编码为: 唯一的问题是它接受连字符作为我不想要的第一个字母(甚至是多个字母)。谢谢

  • 问题内容: 我正在尝试使用以下规则在Java中使用用户名链: 长度> = 3 有效字符:az,AZ,0-9,点,破折号和下划线。 有人可以帮我提供正则表达式吗? 问题答案: 试试这个正则表达式:

  • 问题内容: 谁能帮助我创建用于密码验证的正则表达式。 条件为“密码必须包含8个字符和至少一个数字,一个字母和一个唯一字符,例如 问题答案: