Java 用于人名的正则表达式

Java 用于人名的正则表达式,java,regex,validation,Java,Regex,Validation,我想对人名进行文本字段验证。我希望人名在以下情况下有效: 它只包含英文字母a-z,a-z 它可能包含多个空格字符 它可以包含任何数量的点字符,如A.B.Devilliers 我试过什么 NAME_REGEX="(\\w|\\s|(\\.))+" 注意:我在Java工作 当我有NAME_REGEX=“(\\w|\\s)+”时,规则1。二,。都被跟踪了,但我也想要3。规则。试试这个用于java的正则表达式: NameRegex = ^^[a-z A-Z\\.\\s]+$ 很难指定名称中应

我想对人名进行文本字段验证。我希望人名在以下情况下有效:

  • 它只包含英文字母
    a-z
    a-z
  • 它可能包含多个空格字符
  • 它可以包含任何数量的点字符,如
    A.B.Devilliers
  • 我试过什么

    NAME_REGEX="(\\w|\\s|(\\.))+"
    
    注意:我在Java工作


    当我有
    NAME_REGEX=“(\\w|\\s)+”
    时,规则1。二,。都被跟踪了,但我也想要3。规则。

    试试这个用于java的正则表达式:

       NameRegex =  ^^[a-z A-Z\\.\\s]+$
    

    很难指定名称中应允许的内容,因此尝试过多调整可能会适得其反。如果有什么的话,我会偏误或允许更多的事情发生

    在我看来,你想要这样的东西:

    (?i)^(?:[a-z]+(?: |\. ?)?)+[a-z]$
    
    在上,查看允许使用哪些名称

    • 我假设你想以一封信开头和结尾
    • 您没有指定任何字母必须特别大写,因此这将接受
      aLan parsoN
    • 如果你想让报价或其他字符,让我知道
    工作原理:

    • (?i)
      使我们处于不区分大小写的模式
    • ^
      断言我们位于字符串的开头
    • (?:[a-z]+(?:\.?)+
      匹配{任何字母,可选后跟空格或点或点空格},一次或多次
    • [a-z]$
      确保最后一个字符是字母

    • NAME\u REGEX
      做你想做的事吗?你对那些有名字但不遵守这些规则的人怎么办?包含像“üöäßí”这样的字符。。。特别是对于名字,拼写可能非常重要……也许对于
      NAME_REGEX=“(\\w\124;\\ s|([A-Z]\\)+”
      来说,要确保点在大写字母之后:),正如dthough所说,你的规则可能会因为很少的名字而有问题(例如我的名字包含一些“-”)@Nizil:那么名字的REGEX应该是什么,据你所说,试图在不受规则约束的事情上强制执行规则,结果总是很糟糕。你不可能比其他人更清楚什么是“有效”名称,什么不是(没有有效名称)——如果我真的想,我可以合法地将我的名称更改为像j0N4tH/-\n这样愚蠢的名称,这意味着我要么不能使用你的应用程序,要么被迫输入错误的数据。不要试图在不受规则约束的事情上强制执行规则。你是对的,但我也希望名称没有点,如“Virat Kohli”中所述。是的,这允许名称没有点。马上发布演示和解释。:)好的,添加了演示和解释,如果您需要任何调整,请告诉我。:)非常好,但您不允许使用多个空格(懒惰的android应用程序用户可能会这样做)。但是很好,我没有特权投票给你的答案。不,这需要任何空间。我想应该是“^[a-z a-z\\.\\s]+$”。您正在添加一个额外的^ya您可以用^a-z a-z\\\.\\s]+$替换它^a-z a-z\\.\\s]+$输出没有变化…..请为您的答案写一些解释。这个正则表达式将认为它只包含英文字母a-z,a-z它可能包含多个空格字符它可能包含任何数量的点字符