Regex 正则表达式检查姓名首字母

Regex 正则表达式检查姓名首字母,regex,Regex,我正在尝试创建一个正则表达式,用于检查一个或多个中间名首字母是否具有以下结构: 首字母。[空白]首字母。[空白]首字母 只要后面跟一个点(.),就可以有多个首字母——两个首字母之间只允许有空格(例如L.B.) 如果没有其他首字母跟随,则首字母后面不可能有空格 目前,我有以下正则表达式,但到目前为止还不能很好地工作: ([A-Z]\. (?=[A-Z]|$))+ 使用regex101,这是一个示例: 正如您所看到的,它仍然匹配字符串,即使末尾有一个空格,而没有其他初始跟随 我不知道为什么会这样

我正在尝试创建一个正则表达式,用于检查一个或多个中间名首字母是否具有以下结构:

首字母。[空白]首字母。[空白]首字母

只要后面跟一个点(.),就可以有多个首字母
——两个首字母之间只允许有空格(例如L.B.)

如果没有其他首字母跟随,则首字母后面不可能有空格

目前,我有以下正则表达式,但到目前为止还不能很好地工作:

([A-Z]\. (?=[A-Z]|$))+
使用regex101,这是一个示例:

正如您所看到的,它仍然匹配字符串,即使末尾有一个空格,而没有其他初始跟随


我不知道为什么会这样。我正在学习正则表达式,如果有人能为我的问题提供解决方案,我将非常高兴:)

您尝试的模式
([a-Z]\。(?=[a-Z]|$)+
使用重复捕获组,它将为您提供上一次迭代的值

在这个重复中,您匹配一个空格
[a-Z]\
实际上意味着它应该出现在比赛中


您可以重复0多次匹配字符[a-Z],后跟空格以匹配多个匹配项

然后匹配一个char[a-Z],断言右边的字符不是非空白字符

\b(?:[A-Z]\. )*[A-Z]\.(?!\S)

如果可以有多个空格,但不应与换行符匹配:

\b(?:[A-Z]\.[^\S\r\n]*)*[A-Z]\.(?!\S)

您尝试的模式
([A-Z]\。(?=[A-Z]|$)+
使用重复捕获组,该组将为您提供上一次迭代的值

在这个重复中,您匹配一个空格
[a-Z]\
实际上意味着它应该出现在比赛中


您可以重复0多次匹配字符[a-Z],后跟空格以匹配多个匹配项

然后匹配一个char[a-Z],断言右边的字符不是非空白字符

\b(?:[A-Z]\. )*[A-Z]\.(?!\S)

如果可以有多个空格,但不应与换行符匹配:

\b(?:[A-Z]\.[^\S\r\n]*)*[A-Z]\.(?!\S)

您看到的错误是因为在最后一步,您的表达式读入了
[A-Z]\。
查找
$
(并找到它)。我可以这样表达模式:
(?:[A-Z]\)*[A-Z]\。$
。请特别对待最后一个首字母,因为它没有最后一个空格。

您看到的错误是因为在最后一步中,您的表达式读入了
[a-Z]\。
向前查找
$
(并找到它)。我可以这样表达模式:
(?:[A-Z]\)*[A-Z]\。$
。特别对待最后一个首字母,因为它没有最后一个空格。

你的意思是这样吗<代码>\b(?[A-Z]\)*[A-Z]\(?!\S)
是,但不可能有换行符图案与换行符不匹配。它断言右边的字符不是非空白字符。你的意思是这样的吗<代码>\b(?[A-Z]\)*[A-Z]\(?!\S)
是,但不可能有换行符图案与换行符不匹配。它断言右边的字符不是非空白字符。