人名的正则表达式

时间:2014-06-20 09:03:32

标签: java regex validation

我想为人名进行TextField验证。我希望在以下情况下让人名有效:

  1. 它只包含英文字母a-zA-Z
  2. 它可能包含多个空格字符
  3. 它可能包含任何号码。像A.B. Devilliers
  4. 这样的名字的点字符

    我尝试了什么?

    NAME_REGEX="(\\w|\\s|(\\.))+"
    

    注意:我在Java工作。

    当我有NAME_REGEX="(\\w|\\s)+"时,遵循规则1.和2.但我也想要3.规则。

2 个答案:

答案 0 :(得分:2)

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

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

(?i)^(?:[a-z]+(?: |\. ?)?)+[a-z]$

the demo上,查看允许的名称。

  • 我假设你想以一封信开始和结束
  • 您尚未指定任何字母必须大写,但这将接受aLan parsoN
  • 如果您想允许引号或其他字符,请与我们联系。

工作原理:

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

答案 1 :(得分:0)

试试java :::

的这个正则表达式
   NameRegex =  ^^[a-z A-Z\\.\\s]+$