javascript name regex



我想写一个RegEx的名字。姓名可以选择以头衔(Dr., Mrs.等)开头,也可以包含两个或三个名字,中间名可以选择缩写为(x)

例如,以下名称应该匹配:

  • 。Jeff T. Walker
  • Susan B. Anthony
  • 。迈克尔·宾厄姆顿
  • 。乔治•布什

    加菲尔德
  • 。J
  • T。疼痛
  • 美国
  • 2020年2月15日

我有:

^(Dr.|Mr.|Mrs.)?[A-Z][a-z]+s([A-Z][a-z]+|[A-Z].)s[A-Z][a-z]+?

我不太确定我哪里出错了

^((Dr|Mr|Mrs). )?[A-Z][a-z]+( [A-Z]([a-z]+|.))? [A-Z][a-z]+

我是这样做的:

  • 在前缀后添加空格-之前,您匹配的是"Dr.James",而不是"Dr.James"
  • 删除姓氏后面的问号-当不在括号后面时,?会导致"延迟匹配"-匹配尽可能少的字符(在本例中为1)
  • 使中间名可选
  • 删除了一些冗余(例如前缀和中间名)
  • 用空格代替s -更容易阅读,并且s匹配制表符,换行符等。

相关内容

  • 没有找到相关文章

最新更新