Java 用于验证此特定格式的名称的正则表达式

Java 用于验证此特定格式的名称的正则表达式,java,regex,Java,Regex,我在寻找正则表达式的解决方案。我有一个全名,允许的字符是a-z、a-z、空格和/,-。@' 此外,它不应以空白字符/空格开头 因此,基本上可以接受以下名称 安吉思·萨辛德兰 Anjith@Sasindran' 安吉思 Anjith/,Sasi@n“跑 安-。萨辛德@ 而以下情况并非如此 一个%jith Sasindran Anjit*)Sasindran 基本上,除了我上面列出的以外,任何东西都可以 我不知道该怎么做。我对正则表达式b/w知之甚少。因此,任何帮助都将不胜感激。使用正则表达式,您可

我在寻找正则表达式的解决方案。我有一个全名,允许的字符是a-z、a-z、空格和/,-。@'

此外,它不应以空白字符/空格开头

因此,基本上可以接受以下名称

  • 安吉思·萨辛德兰
  • Anjith@Sasindran'
  • 安吉思
  • Anjith/,Sasi@n“跑
  • 安-。萨辛德@
  • 而以下情况并非如此

  • 一个%jith Sasindran
  • Anjit*)Sasindran
  • 基本上,除了我上面列出的以外,任何东西都可以


    我不知道该怎么做。我对正则表达式b/w知之甚少。因此,任何帮助都将不胜感激。

    使用正则表达式,您可以定义如下所示的字符类:
    [\sa-zA-Z@\,\-'/]

    这样,您就可以定义一个“允许的”字符。您可以通过添加加号操作符来指定它的序列:
    [\sa-zA-Z@\,\-'/]+

    现在,为了避免文本以空白字符开头,您可以创建一个字符类,其中包含除空格
    [a-zA-Z@,\-'/]
    之外的所有需要的字符

    因此,现在,最后一个正则表达式是“除空格外的任何想要的字符,后跟任意想要的字符一定次数”:
    [a-zA-Z@,\-'/][\sa-zA-Z@,\-'/]*
    对于java,必须使用模式类对字符串应用正则表达式检查:

    var nameMatcher=Pattern.compile(“[a-zA-Z@\\,\\-'/][\\sa-zA-Z\\,\\-'/]*”).asPredicate();
    if(nameMatcher.test(“Anjit@”))System.out.println(“Name match!”);
    
    您可以使用获取大量信息。

    使用:

    ^[^\s][ A-Za-z-'@.,/]*$
    
    • ^[^\s]
      检查开头是否没有空格
    • A-Za-z
      接受给定字符串中的所有字母
    • -'@、/
      只接受这些特殊字符
    • *
      匹配0个或多个前面的标记

    结尾处的$符号有什么作用?为什么*不能是a+?您提供的解决方案非常适合我的情况,但我想知道更多,因为您已经给出了很好的解释。请使用
    %
    作为输入进行测试。它会告诉你这是一场比赛。[^\s]`表示除空白字符以外的任何字符。@capt.swag
    $
    结尾表示它将接受以该正则表达式条件结尾的字符串。更好的理解是,正如@amanin所说的,用您的示例
    An%jith Sasindran
    测试它,它仍然会匹配
    An
    部分。另外,
    +
    符号将匹配1个或多个前面的标记,而
    *
    匹配0个或多个。在这些示例中,您提供的
    */+
    都可以工作,但您需要根据自己的情况使用它