Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 全名的正则表达式(必须是两个或更多单词)_C#_Asp.net_Regex - Fatal编程技术网

C# 全名的正则表达式(必须是两个或更多单词)

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]+

我试图为人名定义一个正则表达式,形式为:“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-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