姓氏或姓氏(或夫人等)的正则表达式

时间:2018-11-06 23:44:25

标签: regex

我正在使用此正则表达式进行一些基本名称验证

^[a-zA-Z][a-zA-Z]*([-' ][a-zA-Z][a-zA-Z]*)*$

不过,我也想允许Mr & Mrs Bobble有效。我当前的正则表达式只允许字符组之间有一个空格,我不确定如何允许<space>&<space> or <space>

1 个答案:

答案 0 :(得分:2)

您可以使用

^[a-zA-Z][a-zA-Z]*(?:(?: & |[-' ])[a-zA-Z][a-zA-Z]*)*$
                     ^^^^^^^^^^^^^  

请参见regex demo

non-capturing group (?: & |[-' ])匹配空格&,空格或-'或单个空格。当找到匹配项后将无法访问与它们匹配的文本时,将使用非捕获组,因此,在这种情况下,所有组都应为非捕获组:(?: & |[-' ])将两个备选方案与{{1}分组} alternation operator|对量化模式序列进行分组。

如果要匹配任何空格,请用(?:(?: & |[-' ])[a-zA-Z][a-zA-Z]*)替换模式中的文字空格。