RegEx 强制执行典型的名字格式

RegEx to enforce a typical Forename format

我想开发一个 RegEx,它可以强制执行典型的 Forename 格式,强制执行以下内容:

例如,可以使用以下名称: [约翰、让-皮埃尔、Smith.Rowe、哈里·史密斯]

但不允许使用以下名称 [john, Jean--Pierre, Smith.-Rowe, Harry Smith(名字之间有两个 space)]

有人可以帮忙吗?

下面的正则表达式可能会有帮助。
小写、大写匹配可以用[A-Z][a-b].
匹配 连续的标点符号,可以与环视断言匹配。

^[A-Z](?:[a-zA-Z]|(?:(?<![ .'-])[ .'-](?![ .'-])))*[a-z]$

Demo