C# 全名的正则表达式(必须是两个或更多单词)
我试图为人名定义一个正则表达式,形式为:“Deepak Das”或“Deepak Bidyabhusan Das”。名称必须包含至少两个类似于上面的单词,并且不能允许使用“Deepak”或“Roger”等单字名称。我已经尝试了很多,但这些表达似乎都不起作用 以下是我迄今为止尝试过的表达方式:C# 全名的正则表达式(必须是两个或更多单词),c#,asp.net,regex,C#,Asp.net,Regex,我试图为人名定义一个正则表达式,形式为:“Deepak Das”或“Deepak Bidyabhusan Das”。名称必须包含至少两个类似于上面的单词,并且不能允许使用“Deepak”或“Roger”等单字名称。我已经尝试了很多,但这些表达似乎都不起作用 以下是我迄今为止尝试过的表达方式: ^[a-z A-Z]+$---> this one is allowing any word names ^[a-zA-Z\s]+$ ^[a-zA-Z\\s]+$ ^[a-z A-Zs]+
^[a-z A-Z]+$---> this one is allowing any word names
^[a-zA-Z\s]+$
^[a-zA-Z\\s]+$
^[a-z A-Zs]+$,
^([a-zA-Z]\s[a-zA-Z])+$ ---> this one is allowing only three word or more.
请您解释一下我可能做错了什么,以及我如何修复它?这应该对您有用:
^([a-zA-Z]*)\s+([a-zA-Z ]*)$
它分别捕获第一个名称和第二个名称。它本身不会匹配单个名称。下面是此正则表达式的一个实例:
如果要捕获多个名字和一个姓氏,请使用:
^([a-zA-Z ]*?)\s+([a-zA-Z]*)$
使用此表达式这不起作用 把它放在这里留待上下文
^(\w+ ){2}
\w
匹配任何字母或数字,+
表示您可以将任意多个字母或数字相邻放置。空格就是一个空格,{2}
表示函数w+
需要2倍
编辑这应该可以
正如@Draken指出的,在第二个单词后面需要一个空格
因此,更简单的方法是:
^\w+ \w+
只有一个字,一个空格和一个字
Edit2
另一个更正,我没有看到它可能超过2个字
^\w+( \w+)+
让他们以大写字母开头:
^[A-Z]\w+( [A-Z]\w+)+
好吧,让我们先详细说明一下规则:
[a-Z]
开头[a-z]
\s
分隔的部分 John Smith
George W Bush // please, notice "W"
Shi Li Hoi Kuang // four parts
因此,模式可以是
^[A-Z][a-z]*(\s[A-Z][a-z]*)+$
但是,请记住,真人的名字可能会有所不同,例如:
Charles de Batz-Castelmore d'Artagnan
注意
-
,'
和d'
;提供一组相关的规则是一项具有挑战性的任务,更不用说为它们提供正则表达式了。但这不允许Fred Jones。
因为它在名称末尾没有空格#5:“人们有N个名字,N的任何值。”
Charles de Batz-Castelmore d'Artagnan