如何建立这个正则表达式

时间:2018-02-06 04:55:20

标签: regex bash

我正在尝试构建一个满足这些要求的正则表达式,但我不知道该怎么做。我尝试使用[A-Z][a-z]+[,][ ][A-Z][a-z]+[ ][A-Z][.],但它没有按照我的意愿行事。我需要一些帮助。

要求

最后,第一个M.

  • 最后 - 必须以大写字母开头,后跟一个小写字母。
  • 首先 - 必须以大写字母开头,后跟一个或多个小写字母。
  • 微米。 - 必须是单个大写字母,后跟句点(。)。此部分(包括前面的空格)是可选的。*

有效接受的字符串示例如下:

"Davis, Mike"
"Leppla, David A."

无效的例子是:

"D, Mike"
"L, David"
"Smith, Joe "    
           ^ with an extra space on the end
"smith, Mike"    
"Jo, Fr a."

1 个答案:

答案 0 :(得分:1)

试试这个:

^[A-Z][a-z]+,\s(?:[A-Z][a-z]+\ |[A-Z]\.\ )*(?:[A-Z][a-z]+|[A-Z]\.)$

See this Demo