我想得到一个名称的正则表达式模式,我用它来进行验证。我现在使用的模式有一些问题。问题是如果我给出一个像
这样的名字jack morrison paul
它的服用,但如果我给予
jack paul
我在哪里给杰克和双重空间而paul它没有take.jack是名字morrison是中间名,保罗是姓。如果我给出姓和名字,如果我不给中间名,它取双倍空格验证。我认为我的正则表达式存在一些问题所以请帮我解决这个问题。我是新手。
// regex pattern
^([A-Za-z]([A-Za-z](\\s|\\.|_)*?)+[a-zA-Z]*$
答案 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个空格。
希望有所帮助!