针对美国和英国名称改进以下正则表达式

Improving the below RegEx for US and UK Names

我正在寻找验证英文名称。我如何改进此 RegEx 以确保连字符、逗号或撇号不会在字符串中出现在最前面或最后?此外,连字符或撇号必须始终紧跟字母。

我有正则表达式:[a-zA-Z-', ]

我的理解是,这将允许所有字母,在所有情况下,包括连字符、逗号和撇号以及字符串中任何位置的空格。

对这门语言还很陌生,所以只是想了解一下。

谢谢。

好的,因为它只是给了一个假定的名称,下面是您可能想尝试的名称:

^[A-Z][A-Za-z'-]+[a-z](,? [A-Z][A-Za-z'-]+[a-z])*$

这将适用于像 O'Harry Jefferson-Wayne 这样的名称,但会拒绝不以小英文字母结尾的单词。

它的要点是 [A-Z] 名称开头,[A-Za-z'-]+ 延续,[a-z] 名称结尾。然后是一组可重复的可选名称,带有可选的逗号分隔符,但需要 space.

我花了更多时间编写示例以在 http://www.regexplanet.com/ 进行测试。那是我在开发时练习正则表达式的地方。你应该试试看。