名称模式正则表达式

时间:2010-11-17 14:32:39

标签: java regex

我想得到一个名称的正则表达式模式,我用它来进行验证。我现在使用的模式有一些问题。问题是如果我给出一个像

这样的名字
jack morrison paul

它的服用,但如果我给予

jack  paul

我在哪里给杰克和双重空间而paul它没有take.jack是名字morrison是中间名,保罗是姓。如果我给出姓和名字,如果我不给中间名,它取双倍空格验证。我认为我的正则表达式存在一些问题所以请帮我解决这个问题。我是新手。

 //  regex pattern     
 ^([A-Za-z]([A-Za-z](\\s|\\.|_)*?)+[a-zA-Z]*$

2 个答案:

答案 0 :(得分:0)

请更好地格式化您的问题。我不得不多次阅读它以了解你想要实现的目标。

我的第一次刺伤:

^([\w]+)\s+([\s\w]+)\s+([\w]+)$

它将分割名字,中间名和姓氏。

答案 1 :(得分:0)

这个怎么样:

^(\w+)\s+(?:(\w+)\s+){0,1}(\w+){0,1}$

我只使用\w简化了名称捕获,它不仅仅是字母匹配,但您可以根据更具体的要求进行更改。

在中间:(?:(\w+)\s+){0,1}说我们要查找一个或多个单词字符,以及一个或多个空格,作为0到1次之间的组,这意味着它是可选的。

但我认为抛出你的部分是使用单\s,这意味着它必须是一个空格。我使用\s+表示至少有一个空格,但可能更多。如果您愿意,可以将其更改为更多限制,例如:\s{1,2}表示1到2个空格。

希望有所帮助!