2016-05-31 73 views
0

下午好,C#正则表达式验证两个名字或更多

我想正则表达式来验证,如果用户输入两个名字以上,不仅是第一个名字,在这个例子中:

例如: FABRICIO(不匹配)

例: FABRICIO Oliveira的(匹配) FABRICIO Oliveira的泽维尔(匹配)

注:表达式必须包含修饰

+5

相关: [Falsehoods Programmers Believe About Names](https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) –

+0

麦当娜王子(是的,我知道他已经死了)或者Beyoncé加入你的俱乐部? – Plutonix

+0

所以你的要求是,字符是有效的名称字符,并有一个空间?那么“玛丽安”呢?那可能只是一个名字,或者是第一个和中间的? – juharr

回答

1

这里的一个正则表达式,仅依赖于一个空白分隔符:

^\S+(\s\S+)+$ 

它使这些假设:

  • 没有名称中有空格,制表符或换行符
  • 名称之间用o ne空格,制表符或换行符

* 这是基于@ juharr的评论,但括号允许两个以上的名称。

编辑:您可以使用此正则表达式这里https://regex101.com/r/nS3hN8/1

EDIT2玩:添加了开始和结束锚正则表达式

+0

谢谢!有用!! –

+1

一个简单的等价模式应该是'\ S \ s \ S' –

+0

@ p.s.w.g,这很有趣,我确信你的回答是错误的,直到我尝试了几个例子。我更喜欢你的模式。 – user2023861

0

尝试其匹配两个由空格分隔的任何长度的话此正则表达式:

new Regex(@"\w+ \w+"); 
+0

所以“约翰奥康纳”不是一个名字?由于口音,它甚至不适用于“FabrícioOliveira”。 – juharr

+0

是“John O'Connor”是一个名字。如果用户只输入名字,表达式不匹配。例如:“约翰”。 –

+0

约翰奥康纳在我的包装盒上工作 –

0

真的,你可以只使用这样的:

if (Regex.Match(stringname, @"\w+\s\w+").Success)