Java正则表达式验证名称

xde*_*000 3 java regex

验证可以的名称

约翰,约翰保罗等

我用这个正则表达式:

String regex = "[A-Z]([a-z]+|\\s[a-z]+)";
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

boolean ok = Pattern.matches(regex, "John Paul");
Run Code Online (Sandbox Code Playgroud)

比赛失败了吗?

为什么?我想使用匹配来验证字符串整体...

这是正则表达式错了吗?

Rob*_*ins 6

验证名称会有很多问题 - 有很多不同类型的名称.考虑:

  • Jéan-luc Picard
  • Carmilla Parker-Bowles
    • Joan d'Arc
  • 马特勒布朗克
  • Chan Kong-sang(成龙的真名)
  • P!nk的
  • Love Symbol #2

最简单的方法是让用户输入他们的名字并按原样接受.如果你想将其分解为个性化名称和姓氏,那么我建议你将输入字段分成两个(或更多)部分,或者只是要求"首选名称"或"昵称"字段.

我怀疑你会找到一个可以验证所有各种名称的正则表达式 - 在你开始尝试之前获得一大组样本数据(最好是现实世界).